gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:21:58 25 4
gpt4 key购买 nike

我目前正在尝试通过 Scripting Bridge 在 Mac 版 Safari 中启用“私密浏览”,但没有成功。以下代码展示了如何执行相同的操作,但对于 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];

但不幸的是,Safari 的工作方式与 Chrome 略有不同。每个 Chrome 窗口在“私密浏览”(隐身)方面都是单独工作的。在 Safari 中,当您启用“隐私浏览”时,整个应用程序都会反射(reflect)该选项,而不仅仅是某个特定窗口。关于如何使用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

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

关于objective-c - 如何在 Safari (Mac) 中启用 "Private Browsing"并打开新链接?脚本桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21816372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com