Applescript:等待页面在 chrome 上加载

问题描述 投票:0回答:3
tell application "Safari"
        repeat until (do JavaScript "document.readyState" in tab 2 of window 1) is "complete"
        end repeat
    end tell
end if

如何在 Chrome 上使用此功能?

javascript google-chrome applescript document-ready
3个回答
2
投票

你应该能够做到

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”。可能有问题。


1
投票

对于 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()

0
投票

循环

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
© www.soinside.com 2019 - 2024. All rights reserved.