如何在Safari扩展中用JavaScript打开新标签?语法报错如何解决?
问题原因&解决方法
- 直接触发语法报错的根因:你混用了Swift语法和JavaScript语法
代码里let myUrl = URL(string: "https://google.com")是Swift创建URL对象的写法,JavaScript不支持Swift的参数标签语法,解析到string:里的冒号时无法识别,就抛出了你看到的Unexpected token ':'错误。
JavaScript中创建URL对象的正确写法是:let myUrl = new URL("https://google.com") - 第二个隐藏问题:你调用的
SFSafariApplication系列API是原生Safari App Extension的Swift/OC专属API,无法直接在JS代码中运行。如果你开发的是基于WebExtensions标准的Safari扩展,应该使用通用的WebExtensions标签API实现新标签打开,完整修正代码如下:
function openTab() { let myUrl = new URL("https://google.com") // 调用WebExtensions标准API创建新标签,Safari扩展原生支持该API browser.tabs.create({ url: myUrl.href, active: true }) } openTab();
如果你开发的是包含原生逻辑的Safari App Extension,这段打开新标签的逻辑需要移到Swift代码部分实现,不能写在JS脚本中。
内容的提问来源于stack exchange,提问作者Ajy_Chikn
相关产品推荐
相关产品推荐

