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

如何通过AppleScript获取Safari中JavaScript异步函数的返回值?

在Safari中通过AppleScript获取JavaScript异步函数返回值的问题

我需要在Safari中运行JavaScript并将返回值传递给AppleScript,类似《Return Javascript variable to AppleScript》的场景。

以下同步代码可正常执行:

tell application "Safari"
    tell front document
        set myVar to do JavaScript "function foo() {return 5;};result=foo()"
        return myVar
    end
end tell

但当JavaScript函数为异步函数(需等待服务器多次响应)时,代码执行失败:

tell application "Safari"
    tell front document
        set myVar to do JavaScript "async function foo() {return 5;};result=foo()"
        return myVar
    end tell
end tell

报错信息为:Script Error: The variable myVar is not defined。

即使改用包含await的JavaScript代码:async function foo() {return 5;};result=await foo(),仍会出现相同错误。

我需要获取异步函数返回值,是为了实现网站消息自动回复:一个JavaScript函数会关闭现有消息弹窗并等待其全部消失(使用const async_delay = ms => new Promise(res => setTimeout(res, ms));及await),另一个函数则打开目标消息弹窗并等待其加载完成。目前我在AppleScript中设置了足够长的延迟,但JavaScript的执行时间会随初始消息数量变化:若延迟过长,期间可能出现新弹窗导致回复对象错误。因此,获取异步JavaScript的返回值会让流程更简洁可靠。

请问AppleScript能否获取JavaScript异步函数的变量?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:37:06