我正在研究在Google Chrome中执行重复性工作的AutoHotkey脚本。每次单击脚本中的链接时,都必须告诉我的脚本在页面加载时进入休眠状态。

我想知道AHK中是否有一种方法可以告诉脚本等待浏览器完成加载页面,而不是让它休眠一段时间。这可能吗?

最佳答案

虽然Karthik's answer比sleep命令更好,并且它在许多站点上都可以很好地运行,但是我发现有些问题会逐渐蔓延,特别是如果您经常使用它。

我自己需要一个可靠的解决方案,我相信我终于找到了。转到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等待窗口的标题开始,方法是说“页面位于...”,这无疑是我们的提示,并预先填充了“已加载”一词。您可以告诉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代码中)将其过滤掉。

关于google-chrome - 在继续使用AutoHotkey之前,我如何等待Google Chrome加载网页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23698421/

10-13 07:46
查看更多