You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Safari加载等待异常:JavaScript检测方法失效求助

解决Safari标签页依次加载URL的问题

原代码卡在加载URL1后停止,核心问题是**do JavaScript没有明确指定在当前标签页执行**,导致无法正确获取页面的readyState,循环无法退出。

以下是修复后的完整代码:

tell application "Safari"
    activate
    tell window 1
        tell current tab
            -- 加载第一个URL
            set URL to "https://google.com"
            -- 等待页面加载完成
            repeat
                set loadState to do JavaScript "document.readyState"
                if loadState = "complete" then exit repeat
                delay 0.5
            end repeat
            -- 加载第二个URL
            set URL to "https://apple.com"
        end tell
    end tell
end tell

关键修改说明:

  • 将所有操作合并到同一个tell application "Safari"块中,避免上下文切换问题
  • 在current tab的上下文里执行do JavaScript,确保获取的是当前标签页的加载状态
  • 用变量loadState存储加载状态,让逻辑更清晰

额外注意事项:

  • 首次运行脚本时,系统会弹出权限请求,需要允许脚本访问Safari的JavaScript功能
  • 如果页面包含大量异步加载内容,document.readyState = "complete"可能不代表所有资源加载完毕,可根据需求调整判断逻辑(比如检查特定元素是否存在)

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:31:01