在AppleScript中检测Safari私密浏览

时间:2017-02-11 23:51:57

标签: cocoa browser safari applescript

我试图编写AppleScript,它会判断 Safari的窗口是否处于私有模式。以下是在Chrome中执行此操作的AppleScript:

tell application "Google Chrome"
    set incognitoIsRunning to the (count of (get every window whose mode is "incognito")) is greater than 0
end tell

if (incognitoIsRunning) then
    return "-- PRIVATE MODE --"
end tell

查看是否已选中隐私浏览菜单选项的旧解决方案不再有效。

1 个答案:

答案 0 :(得分:1)

可以利用Safari中的一个怪癖来确定是否启用了私有模式:Safari不允许在私有模式下使用localStorage.setItem(请参阅related StackOverflow post)。我们可以通过在AppleScript中使用JavaScript代码段来利用这一点。如果不支持localStorage,则JavaScript会抛出一个错误(由try / catch块捕获),我们用它来设置我们的布尔值。

tell application "Safari"
    set checkMode to "
         var isprivate = false;
          try {
               window.localStorage.setItem('foobar', 1);
          } catch(e) {
               isprivate = true;
          }
       isprivate;
"
    set isPrivate to do JavaScript checkMode in current tab of first window
end tell

log isPrivate

当然,您需要调整此AppleScript以在Safari中设置适当的目标窗口/选项卡。