将Javascript变量返回给AppleScript

Cor*_*ley 5 javascript safari applescript

所以,我有一个简单的问题,这在AppleScript中是不可能的.我试图从代码中没有返回的javascript返回一个变量.换句话说,我试图获取元素的状态,以便我可以有条件地运行一个函数.这是我的代码,不会得到回报:

tell application "Safari"
    activate
    open location "http://127.0.0.1:9999"
    delay 1
    set myVar to do JavaScript "var obj = document.getElementById(87); myVar = obj.value; return myVar;" in document 1
    return myVar
end tell
Run Code Online (Sandbox Code Playgroud)

所以,基本上我正在尝试获取值obj并将其返回到AppleScript,它应该在0到255之间(它是一个按钮).问题是,我对javascript函数没有任何控制权,所以我无法添加一个return obj.value.这可能吗?

Jer*_*ton 4

删除 \xe2\x80\x9creturn\xe2\x80\x9d 以及 \xe2\x80\x9cvar\xe2\x80\x9d。\xe2\x80\x9cdo JavaScript\xe2\x80\x9d 将返回最后一个全局值。例如,应返回 7.0:

\n\n
tell application "Safari"\n    activate\n    open location "http://www.hoboes.com/Mimsy/"\n    delay 1\n    set myVar to do JavaScript "numbervalue=3;fred=numbervalue+4" in document 1\n    return myVar\nend tell\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,这应该返回 3.0,因为 \xe2\x80\x99 是最后一个全局值值:

\n\n
tell application "Safari"\n    activate\n    open location "http://www.hoboes.com/Mimsy/"\n    delay 1\n    set myVar to do JavaScript "numbervalue=3; var fred=numbervalue+4" in document 1\n    return myVar\nend tell\n
Run Code Online (Sandbox Code Playgroud)\n