我目前正在尝试通过Scripting Bridge
在Safari for Mac中启用“私密浏览”,但没有任何成功。以下代码显示了如何执行相同操作,但对于Google Chrome(创建启用了隐身模式并打开新链接的新窗口):
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
或类似内容的任何想法吗?
谢谢!
答案 0 :(得分: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完成,并且它比直接编写应用程序脚本更慢,更绚丽,但它可能是您的最佳选择。如果您采用此路由,请确保您的跨脚本授权包含System Events应用程序的软件包ID。