簡體   English   中英

AppleScript阻止Safari彈出窗口

[英]AppleScript to block Safari pop-up windows

我正在嘗試自動阻止Safari中的彈出窗口。 我嘗試了以下默認寫操作

defaults write com.apple.Safari WebKit2JavaScriptCanOpenWindowsAutomatically -boolean false

但這不能做到。 我也嘗試將其設置為true,但即使那樣也沒有幫助。 我目前正在嘗試找到一種使用AppleScript的方法。 這是我到目前為止所寫的-

CMD_ACTIVATE='tell application "Safari" to activate'
CMD_NEWTAB='tell application "System Events" to keystroke "," using {command down}'
osascript -e "$CMD_ACTIVATE" -e "$CMD_NEWTAB"

這打開了首選項,但是我畫了一個空白。 有人對如何進行有任何建議嗎? 另外,我真的不需要僅在AppleScript中解決此問題的方法,任何其他方式也將有所幫助。

注意:我現在只使用Mac OS一周,對這個OS的細微差別還不太了解,因此在回答時請多加描述。 謝謝。

阻止彈出窗口是通過Safari /首選項/安全選項卡完成的,您需要在其中設置正確的復選框。

此首選項似乎存儲在您的庫/首選項文件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,...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM