macos - 在后台使用 URL 打开 Safari 应用程序,而不显示 Safari UI

标签 macos cocoa safari

我想在 Safari 中打开当前 Cocoa 应用程序的 URL,但问题是我不希望用户看到 Safari UI。即 Safari 应该在后台执行,而不显示其中发生的情况。 这可能吗?

如果是,请告诉方法来做到这一点。

最佳答案

您可以使用 WebView 在 Web View 中打开 URL如果 safari 不是强制要求,则不要使 WebView 对用户可见。

或者

您可以使用Scripting Bridge框架来最小化应用程序Safari或在头文件中使用其他方法Safari.h打开 URL 后在后台运行它。 您可以通过这个link了解有关脚本桥的更多信息。对于您的任务,请按照以下步骤操作:

使用下面的终端命令生成 safari 的头文件:

   sdef /Applications/Safari.app | sdp -fh --basename Safari

现在,检查您的主文件夹或执行终端 cmd 的当前目录以查看文件 Safari.h 拖动该文件并将其添加到您的项目中。 将 ScriptingBridge.Framework 添加到您的项目中。

导入 header :

#import <ScriptingBridge/ScriptingBridge.h>

#import "Safari.h"

现在使用以下代码在打开 URL 后隐藏 safari:

SafariApplication* sfApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.Safari"];

SafariWindow* win =  [[sfApp windows]objectAtIndex:0];
[win setVisible:FALSE];

关于macos - 在后台使用 URL 打开 Safari 应用程序,而不显示 Safari UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721325/

相关文章:

xcode - 在 WebView 中显示 HTML 代码

objective-c - 当 URL 为空时 dataWithContentsOfURL 返回值不为 nil

objective-c - Mojave 上的 NSProgressIndicator 问题

javascript - 通过 DOMParser 渲染时,HTML 5 视频不会在 Safari 中显示(通过 innerHTML 渲染工作正常)

jquery - 如何使用 jQuery 自动切换样式表?

linux - 寻找将 PDF 转换为图像和文本(或 html)的工具

objective-c - NSTableView -setDataSource 在由 FSEvents 触发时不起作用

javascript - 如何检测移动浏览器的退出意图?

cocoa - 可编辑的 CATextLayer?

swift - NSStatusBar 中的 NSStatusItem,操作选择器方法没有响应