如何打开我的options.html?目前我得到无法读取未定义的属性'创建'

时间:2018-03-09 11:21:32

标签: javascript google-chrome-extension

xhr.onreadystatechange = function() {
if(this.readyState == this.HEADERS_RECEIVED) {
    chrome.tabs.create({
      url: "chrome-extension://kgllckjehjabihppilipeagjojdmlfch/options.html"
    });
}

我发现的应该是有效的。我也尝试使用url: "options.html"。但是当代码运行时,我得到了

  

未捕获的TypeError:无法读取未定义的属性“create”       在XMLHttpRequest.xhr.onreadystatechange(myscript.js:70)

1 个答案:

答案 0 :(得分:2)

您正在尝试在内容脚本中使用chrome.tabs.create。此API仅适用于后台脚本。而是使用window.open从内容脚本中创建新选项卡。

// Regular webpage; works
window.open("https://google.com");
// Privileged URL; is redirected to about:blank
window.open("chrome-extension://kgllckjehjabihppilipeagjojdmlfch/options.html");

对于选项页面,这样做,因为它使用chrome-extension协议,Firefox不支持使用window.open。

这是我在后台脚本中打开我的选项页面的方式:

chrome.runtime.openOptionsPage();

如果您需要在内容脚本中调用它,请使用消息:https://developer.chrome.com/apps/messaging

示例:

background.js

chrome.runtime.onMessage.addListener(function(message) {
    switch (message.action) {
        case "openOptionsPage":
            openOptionsPage();
            break;
        default:
            break;
    }
});

function openOptionsPage(){
    chrome.runtime.openOptionsPage();
}

content_script.js

chrome.runtime.sendMessage({"action": "openOptionsPage"});