在Microsoft Edge扩展中未定义browser.tabs

时间:2017-05-08 23:19:57

标签: javascript microsoft-edge microsoft-edge-extension

我正在编写Microsoft Edge扩展程序。

我有以下清单文件:

{
  "author": "",
  "description": "Test",
  "name": "Test",
  "version": "1.0",
    "permissions": [        
        "tabs",
        "<all_urls>"
    ],
  "content_scripts": [{
    "js": ["script.js"],
    "matches": ["*://*/*"]
  }],
  "icons": {
    "48": "icons/icon-40x40.png"
  }
}

当我输入我的script.js:

var currentTab = browser.tabs.getCurrent();
alert(currentTab.index);

它失败了,因为browser.tabs未定义?

为什么?

enter image description here

2 个答案:

答案 0 :(得分:0)

这是内容脚本无法实现的,因为它有局限性。

browser.tabs API只能在后台脚本和浏览器操作弹出脚本中使用/可用。要实现预期的功能,您可以向后台脚本发送消息,在后台脚本中可以使用browser.tabs API。

答案 1 :(得分:-1)

您可以在有浏览器标签的上下文中调用此函数browser.tabs.getCurrent(),例如选项页面。如果你从后台脚本或弹出窗口调用它,它将返回undefined.But,因为我看到你在内容脚本中使用了这个函数,所以它不应该是一个问题。

这是一个返回Promise的异步函数。

您可以查看this site以获取有关如何使用Edge Extension功能的更多信息。

此外,您不应将作者字段留空,否则可能会出错。所以试着在里面写下你的名字。