当前位置: 首页 > 知识库问答 >
问题:

如何在Safari (Mac)中启用“隐私浏览”并打开新链接?脚本桥

戚默
2023-03-14

我目前正在尝试通过脚本桥在Mac的Safari中启用“私人浏览”,但没有任何成功。以下代码显示了如何做同样的事情,但对于GoogleChrome(创建一个启用隐身模式的新窗口并打开一个新链接):

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中,当您启用“私人浏览”时,整个应用程序将反映该选项,而不仅仅是一个特定的窗口。关于如何使用ScriptingBridge或类似的方法来实现这一点,有什么想法吗
谢谢!

共有1个答案

章侯林
2023-03-14

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

您可以使用System Events使用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。

 类似资料:
  • 问题内容: 在我的网页中,有一个链接应始终以私人浏览模式打开。那么如何使用HTML / javascript / jquery / php做到这一点呢? 问题答案: 这取决于用户。您不能强制用户以私人浏览模式打开浏览器。

  • 我有一个selenium代码,它在Windows 7 for Safari浏览器上成功运行,但当我在MAc机器上运行Safari Browser中的类似代码时。 但我犯了一个错误。它正在打开新的Safari浏览器,但没有点击URL。我的代码是:= 我也浏览了官方网站,但是也没有用。 我得到的错误是:-线程“main”<code>org.openqa.selenium.remote中出现异常。无法访

  • 我最近实现了shouldInterceptRequest方法来检测链接的时间“http://sitemercado.com.br/valida“点击在android浏览器中打开它,而不是在webview中内部打开,直到它工作为止。链接在浏览器中打开,但当我回来查看webview应用程序时,它也被加载了,我希望它只在浏览器中加载。 我的代码如下: 我哪里做错了?

  • 问题内容: 是否有任何(简单/内置方式)打开新浏览器(我的意思是默认的OS浏览器)窗口来查找Electron链接的方法,而不是访问您Electron应用程序中的链接? 问题答案: 您可以简单地使用:

  • 在开发菜单中没有找到对应设置,环境信息: Safari 17.3.1 MacOS 12.7.3

  • 问题内容: <a target=”_blank” data-rel=”external” href="http://www.kidzout.com">www.kidzout.com 问题答案: 作为建议类似的问题,使用JavaScript来调用与参数设置为当按照InAppBrowser文档: 这应该起作用,尽管更好,更灵活的解决方案是拦截所有链接的事件,并使用从链接属性读取的参数进行调用。 请记住