cocoa - 在 AppleScript 中检测 Safari 私密浏览

标签 cocoa browser safari applescript

我正在尝试编写 AppleScript,它可以判断 Safari 窗口是否处于私有(private)模式。以下是在 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

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

最佳答案

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

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 中设置适当的目标窗口/选项卡。

关于cocoa - 在 AppleScript 中检测 Safari 私密浏览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182648/

相关文章:

macos - 在 Cocoa 中移动文件

objective-c - NSOutlineView SourceList View 上的边距不正确

swift - 如何在 macOS 的登录项中显示应用程序助手?

security - 保护 websockets 免受外部脚本的影响

javascript - 仅在 NodeJS/浏览器的开发模式下显示日志信息

testing - 如何在 Safari 3 和 Safari 4 中进行测试?

macos - 如何本地化 Apple 帮助手册

android - 仅在外部浏览器中打开网页链接

html - 一旦 HTML 文档具有 list (cache.manifest),您如何删除它?

javascript - FileSaver.js 不使用 Safari 下载 PDF