我正在开发一个在chrome和safari之间共享代码的浏览器扩展,基本上它是一个html页面,我在safari应用程序扩展上的WKWebView(以及Chrome扩展上的iframe)中加载
。除了链接不会在 safari 应用程序扩展弹出窗口中打开(如果它们有target="_blank"
或像 facebook 登录这样的弹出窗口)之外,一切正常。
有谁知道是否有可能让野生动物园像在普通野生动物园选项卡中单击一样打开它们?
我试图查看 WKWebView 是否在我的 html 内容中设置了全局safari
对象,但似乎没有,因此此 Safari 扩展弹出链接不起作用(结果为ReferenceError: Can't find variable: safari
)。
这是我在SafariExtensionViewController中加载Web视图的方式:
override func viewDidLoad() {
super.viewDidLoad()
...
self.view.addSubview(webView)
webView.navigationDelegate = self
...
webView.load("(baseUrl)?url=(currentUrl)")
}
以及使load
部分工作的扩展:
extension WKWebView {
func load(_ urlString: String) {
if let url = URL(string: urlString) {
let request = URLRequest(url: url)
load(request)
}
}
}
Safari技术预览版 77(2019 年 3 月 6 日)和常规 Safari 的 12.1.x。
使window.safari对象在向safari extension://资源打开的框架中可用
https://webkit.org/blog/8658/release-notes-for-safari-technology-preview-77/
所以如果你按照这种方法,你应该没问题。