1

我目前正在尝试在 Safari for Mac 中启用“私人浏览”,Scripting Bridge但没有成功。下面的代码展示了如何做同样的事情,但对于谷歌浏览器(创建一个启用隐身模式的新窗口并打开一个新链接):

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或类似的任何想法?
谢谢!

4

1 回答 1

0

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

系统事件脚本无法通过 Scripting Bridge 完成,而且它比直接编写应用程序脚本更慢、更不稳定,但它可能是您的最佳选择。如果您走这条路,请确保您的跨脚本授权包括系统事件应用程序的捆绑 ID。

于 2014-02-19T16:54:28.523 回答