虽然Karthik's answer 比睡眠命令更好,而且它可以在许多网站上运行得相当好,但我发现有一些问题可能会蔓延,尤其是如果你经常使用它。
我自己需要一个可靠的解决方案,我相信我终于找到了。转到 Chrome 网上应用店并添加名为 Control Freak 的 Google Chrome 扩展程序。这很容易让您设置可以在单个页面、整个域或任何站点/页面上触发的代码块。
Control Freak Chrome Extension
加载后,单击您现在为扩展程序提供的齿轮按钮。在您需要进行页面加载检测的相应上下文/空间中单击弹出窗口的顶部。即All
现在您可以单击 Libs 选项卡。向下滚动到 jQuery。您可以从列表中选择任何您喜欢的版本,但我选择了最新的。请注意,CDN 的 url 添加在底部。现在,在您单击底部的Save 按钮后,无论选择什么上下文,您都将始终可以使用 jQuery。
切换回 JavaScript 选项卡并添加此代码,然后修改为您喜欢的方式:
jQuery(function() {
prompt("Diagnostic: Page Status", "loaded");
});
单击保存后,此代码将在 jQuery Ready 事件时执行。现在您有了一种可靠的方法来检测页面加载,AHK 可以使用它!
有了这个,您可以让 AutoHotkey 等待一个窗口,该窗口的标题以“The page at”开头,这无疑是我们的提示,预先填充了我们的单词“loaded”。你可以告诉 AHK 发送一个 Control+c 来复制它,然后检查它的值,或者只是假设你看到了它,那么你可能得到了你所期望的。下面的 AHK 代码可以等待提示弹出(顺便说一句,这可以很容易地完成)。
clipboard=
WinWait, The page at
WinWaitActive
Send ^c
ClipWait
WinClose
; The rest here is entirely optional tooltip code, but can be useful.
tooltip, The diagnostic data provided was: %clipboard%,0,0
sleep, 1000
tooltip
所以让我们对其进行优化,并将其放入一个可以反复调用的函数中:
功能定义:
waitForPageLoad()
{
WinWait, The page at
WinWaitActive
WinClose
}
函数调用:
waitForPageLoad()
其他想法..
现在我注意到即使页面没有真正更改或重新加载时也会触发此代码,例如页面 URL 可能更改时,但他们专门将其编码为不离开页面,通常您在那里查看新内容。这非常适合我的目的,但是可以通过设置某种变量并检查它是否已经设置(在 Control Freak 中添加的 JavaScript 代码中)来过滤掉。