如何在 Safari (Mac) 中启用"Private Browsing"并打开新链接?脚本桥



我目前正在尝试通过Scripting Bridge在 Mac 版 Safari 中启用"隐私浏览",但没有任何成功。以下代码显示了如何执行相同的操作,但对于谷歌浏览器(创建一个启用了隐身模式的新窗口并打开一个新链接):

chromeBrowser = [SBApplication applicationWithBundleIdentifier:@"com.google.Chrome"];
ChromeWindow *window = [[[chromeBrowser classForScriptingClass:@"window"] alloc] initWithProperties:@{@"mode": @"incognito"}];
[chromeBrowser.windows addObject:window];
ChromeTab *tab = [window.tabs firstObject];
tab.URL = url;
[chromeBrowser activate];

但是,不幸的是,与Chrome相比,Safari的工作方式略有不同。每个Chrome的窗口在"隐私浏览"(隐身)方面单独工作。在Safari中,当您启用"隐私浏览"时,整个应用程序将反映该选项,而不仅仅是特定窗口。关于如何使用Scripting Bridge或类似的东西来做到这一点的任何想法?
谢谢!

Safari 的 AppleScript 词典不允许您访问隐私浏览模式,因此无法直接在 Scripting Bridge 中执行此操作。

您可以使用系统事件的 NSAppleScript 来执行此操作,如下所示:

tell application "Safari"
    set menuItemName to localized string "Private Browsing …"
end tell
tell application "System Events" to tell process "Safari"
    if menu item menuItemName of menu 1 of menu bar item 2 of menu bar 1 exists then
        click menu item menuItemName of menu 1 of menu bar item 2 of menu bar 1
        keystroke return
    else
        click menu item menuItemName of menu 1 of menu bar item 2 of menu bar 1
    end if
end tell

系统事件脚本无法通过脚本桥完成,它比直接编写应用程序脚本更慢、更脆弱,但它可能是您的最佳选择。如果采用此路由,请确保跨脚本授权包含系统事件应用程序的捆绑 ID。

最新更新