我有这个扩展,我想在该扩展的JavaScript部分中打开一个新标签。在将其迁移到 Safari App Extension 之前,我可以做
window.open(url, "_blank");
但是当我在Safari 12中将其作为App Extension运行时,它会将 current 链接添加到阅读列表(?!)。
当我在控制台中运行上面的代码时,它将打开url
的新标签,但是我必须在Safari偏好设置中启用弹出窗口。我在苹果非常糟糕的文档中找不到任何内容。
这是否甚至可以在“客户端”上进行?还是必须在Swift代码中处理?
答案 0 :(得分:3)
如果您想使用Safari App Extensions打开新标签,则需要使用本机代码来完成。
您可以通过获取活动窗口,然后在该窗口上调用openTab()
方法来实现此目的。
以下是实现此目的的代码段:
let myUrl = URL(string: "https://google.com")
// This grabs the active window.
SFSafariApplication.getActiveWindow { (activeWindow) in
// Request a new tab on the active window, with the URL we want.
activeWindow?.openTab(with: myUrl, makeActiveIfPossible: true, completionHandler: {_ in
// Perform some action here after the page loads if you'd like.
})
}