【问题标题】:How can I add a property to the window object in Chrome using Applescript?如何使用 Applescript 向 Chrome 中的窗口对象添加属性?
【发布时间】:2016-06-11 03:56:55
【问题描述】:

在 Chrome 的 JavaScript 控制台中,我可以输入以下内容:

window.myVar = "myValue";

然后我可以从窗口上下文访问myVar,它返回"myValue"。太棒了。

但是,如果我在 Applescript 中执行以下操作:

tell application "Google Chrome"
    execute front window's active tab javascript "window.myVar = 'myValue';"
end tell

此执行语句似乎在调用脚本时运行。不会引发任何错误,并且 Chrome 窗口存在。但是当我尝试从窗口上下文中引用myVar 时,只会返回undefined。出于测试目的,我在声明之后添加了一条警报语句 - 警报将触发,但 myVar 仍未设置。

现在,在 Safari 中,使用带有相同代码的 do JavaScript 就像我直接在控制台中输入代码一样 - myVar 返回一个值。

当 Applescript 可以手动调用时,为什么 Chrome 不触发这些语句? (Chrome 51.0.2704.84,OS X 10.11.5)

【问题讨论】:

  • 为什么 Chrome 本身甚至会知道 Apple Script? o_0 你认为谷歌的人们花了很多时间试图让它理解它吗?它不适用于任意程序...
  • Google Chrome 提供了一个字典,可与 AppleScript 一起用作 .SBF,可在脚本编辑器中查看。 Chrome 是可编写脚本的 - 它只是执行此 JavaScript 的方式与用户键入它时不同,我想了解原因。

标签: javascript google-chrome scripting applescript


【解决方案1】:

我发现了一个解决方法。可能不是最好的,但以下行执行我想到的 JavaScript,同时还设置了 window 的属性:

tell front window of application "Google Chrome"
    set URL of active tab to "javascript:" & window.myVar = "myValue"
end tell

使用它,myVar 会正确返回 "myValue"。不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2017-05-26
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多