AppleScript可阻止Safari弹出窗口

时间:2017-02-03 05:46:56

标签: macos safari automation applescript

我正在尝试自动阻止Safari中的弹出窗口。 我尝试了以下默认值写操作

https://maps.googleapis.com/maps/api/place/details/json?input=bar&placeid=PLACE_ID&key=API_KEY

但这没有做到。我也试过把它设置为真,但即使这样也没有用。我目前正在尝试使用AppleScript找到一种方法。 这就是我到目前为止所写的内容 -

defaults write com.apple.Safari WebKit2JavaScriptCanOpenWindowsAutomatically -boolean false

这会打开首选项但我会画一个空白。任何有关如何进行的建议的人?另外,我真的不需要在AppleScript中解决这个问题,任何其他方式也可以提供帮助。

注意:我一直只使用Mac OS一周,并且不熟悉这个操作系统的细微差别,所以请在回答时有点描述性。 感谢。

1 个答案:

答案 0 :(得分:0)

阻止弹出窗口是通过Safari / preferences / tab Security完成的,您需要设置正确的复选框。

此首选项似乎存储在您的库/首选项文件com.safari.plist中,该文件包含标志com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaScriptCanOpenWindowsAutomatically,当弹出窗口被阻止时值为是。

但是,它可能不是唯一可以更改的地方,在任何情况下,它都没有正式记录,因此Apple可以随时更改地点。建议不要使用它。

回到Applescript,因为Safari在AppleScript处理事件方面很差,你被迫通过GUI脚本。这就是您的开始,但请记住,如果Apple更改了Safari首选项窗口的布局,则必须检查您的脚本。

在进行GUI脚本编写时(同样,只有在没有找到其他解决方案时),您必须了解GUI对象的结构。窗口包含按钮,复选框,工具栏......在层次结构模型中。例如,Safari中的首选项窗口包含工具栏,对象"组1"根据工具栏当前选择,它本身包含许多对象。一旦你理解了这个概念,下面的脚本就可以很容易地理解你所做的事情了:

tell application "Safari" to activate
tell application "System Events"
keystroke "," using {command down}
delay 0.2 -- leave sometime to open window
tell window 1 of process "Safari"
    click button 6 of toolbar 1 -- Security button is number 6
    delay 0.2
    -- check if check box not yet set and set it.
    if (value of checkbox 5 of group 1 of group 1) = 0 then click checkbox 5 of group 1 of group 1
end tell
delay 0.2
click button 1 of window 1 of process "Safari" -- click on red / close button
end tell

我在Safari 10.0.3上运行。如果您的版本不同,则首选项窗口可能不同。然后必须调整脚本:安全选项卡按钮可能不再是您的版本中的数字6,...

相关问题