2

我正在尝试使用browser.tabs.create()我的background.jsWebExtension 创建一个新选项卡,如下所示:

createTab: function () {
    var newTab = browser.tabs.create({ url: someUrl });
    newTab.then(onCreated, onError);
}

新选项卡在浏览器中创建,但是当到达最后一行时,会引发错误:

SCRIPT5007:无法获取未定义或空引用的属性“then”

Locals 窗口显示newTab的是undefined.

我在这里做错了什么?我以为那.create()会立即返回一个Promise. 我知道这create()是一个异步函数 - 但我的调用函数不需要异步,是吗?

任何帮助,将不胜感激。

4

2 回答 2

2

我最终阅读了Microsoft 文档(谁知道?)并遇到了这个小宝石:

在此处输入图像描述

似乎很确定;现在我只需要一个使用回调的例子......

于 2017-11-29T15:53:59.077 回答
1

As Scott Baker already mentioned, Microsoft Edge extension APIs sadly don't support promises.

So you could refer to this MDN example on how to use callbacks:

browser.windows.onCreated.addListener((tab) => {
  console.log("New tab: " + tab.id);
});

Or even better: Provide the callback directly as second parameter to the create function:

var newTab = browser.tabs.create({ url: someUrl }, (tab) => {
  console.log("New window: " + window.id);
});

See the chrome docs (seems to apply for Edge, too): https://developer.chrome.com/extensions/tabs#method-create

Please note: You can achieve the same, if you're aiming for a new window (instead of a new tab) with windows.create(object createData, function callback)

于 2018-03-10T10:37:24.547 回答