无法让 Edge 在我的 WebExtension 中实现 Return Promise
Can't get Edge to Return a Promise in my WebExtension
我正在尝试使用我的 background.js
WebExtension 中的 browser.tabs.create()
创建一个新选项卡,如下所示:
createTab: function () {
var newTab = browser.tabs.create({ url: someUrl });
newTab.then(onCreated, onError);
}
新标签页在浏览器中创建,但是当到达最后一行时,抛出错误:
SCRIPT5007: Unable to get property 'then' of undefined or null reference
当地人 window 显示 newTab
是 undefined
。
我在这里做错了什么?我以为 .create()
会立即 return 一个 Promise
。我知道 create()
是一个异步函数 - 但我的调用函数不需要异步,对吗?
如有任何帮助,我们将不胜感激。
我最终读完了 Microsoft documentation(谁知道?)并遇到了这个 gem:
看起来很确定;现在我只需要一个使用回调的例子...
正如 Scott Baker 已经提到的,遗憾的是 Microsoft Edge 扩展 API 不支持承诺。
所以你可以参考this MDN example关于如何使用回调:
browser.windows.onCreated.addListener((tab) => {
console.log("New tab: " + tab.id);
});
甚至更好:直接将回调作为第二个参数提供给 create
函数:
var newTab = browser.tabs.create({ url: someUrl }, (tab) => {
console.log("New window: " + window.id);
});
查看 chrome 文档(似乎也适用于 Edge):https://developer.chrome.com/extensions/tabs#method-create
请注意:如果您的目标是使用 windows.create(object createData, function callback)
创建一个新的 window(而不是新的标签页),您也可以实现同样的效果
我正在尝试使用我的 background.js
WebExtension 中的 browser.tabs.create()
创建一个新选项卡,如下所示:
createTab: function () {
var newTab = browser.tabs.create({ url: someUrl });
newTab.then(onCreated, onError);
}
新标签页在浏览器中创建,但是当到达最后一行时,抛出错误:
SCRIPT5007: Unable to get property 'then' of undefined or null reference
当地人 window 显示 newTab
是 undefined
。
我在这里做错了什么?我以为 .create()
会立即 return 一个 Promise
。我知道 create()
是一个异步函数 - 但我的调用函数不需要异步,对吗?
如有任何帮助,我们将不胜感激。
我最终读完了 Microsoft documentation(谁知道?)并遇到了这个 gem:
看起来很确定;现在我只需要一个使用回调的例子...
正如 Scott Baker 已经提到的,遗憾的是 Microsoft Edge 扩展 API 不支持承诺。
所以你可以参考this MDN example关于如何使用回调:
browser.windows.onCreated.addListener((tab) => {
console.log("New tab: " + tab.id);
});
甚至更好:直接将回调作为第二个参数提供给 create
函数:
var newTab = browser.tabs.create({ url: someUrl }, (tab) => {
console.log("New window: " + window.id);
});
查看 chrome 文档(似乎也适用于 Edge):https://developer.chrome.com/extensions/tabs#method-create
请注意:如果您的目标是使用 windows.create(object createData, function callback)