tell application "Safari"
repeat until (do JavaScript "document.readyState" in tab 2 of window 1) is "complete"
end repeat
end tell
end if
如何在 Chrome 上使用此功能?
你应该能够做到
tell application "Google Chrome"
repeat until (execute tab 1 of window 1 javascript "document.readyState" is "complete")
end repeat
execute tab 1 of window 1 javascript "document.readyState"
end tell
但是您的页面可能会永远或在很长一段时间内返回“交互式”。
仅使用 AppleScript 进行操作应该是:
tell application "Google Chrome"
repeat until (loading of tab 1 of window 1 is false)
1 + 1 --just an arbitary line
end repeat
loading of tab 1 of window 1 --this just returns final status
end tell
但是,说实话,我觉得很可疑。我有一个页面,正文中只有非常简单的 html (http://www.crgreen.com/boethos/boethos.html),并且它可以使用它,但对于大多数页面(我已经尝试过 yahoo、macupdate、 BBC 新闻、jedit.org 等)我从来没有得到过“loading = true”。可能有问题。
对于 Chromium 浏览器(Google Chrome、Brave 浏览器、Microsoft Edge、Opera、Vivaldi 等),您不需要 JavaScript 解决方法,因为它们对检查选项卡是否仍在加载有适当的支持。
在 AppleScript 中:
tell application "Google Chrome" to return loading of tab 2 of window 1
在自动化 JavaScript (JXA) 中:
Application('Google Chrome').windows[1].tabs[2].loading()
循环
repeat until (loading of tab 1 of window 1 is false)
可能有效,但仅当活动窗口中有单个选项卡时才有效。等待 Chrome 中最新选项卡加载完毕的更好方法是使用 active tab
:
tell application "Google Chrome"
repeat until (loading of active tab of window 1 is false)
delay 0.5
end repeat
end tell