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
相关产品推荐
相关产品推荐

