从弹出窗口打开Chrome选项

5
当我运行我的代码时,它显示“about blank”,而不是我的扩展选项。我希望它能在扩展前面打开选项。这是一些我的扩展代码- popup.js:
document.getElementById('div_options').onclick = openOps;
function openOps() {
       window.open("chrome://extensions/?options=pgapbgeppkbeghldobmjehpbdleapdip");
       closeAndReloadPopup();
    };

popup.html:

<li>
    <a href="#"><div id="div_options">Options</div></a>
</li>

manifest.json:

{   
"background": {
        "page": "background.html"
    },
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"page_action": {
          "default_icon": {
            "19": "images/icon19.png",
            "38": "images/icon38.png"
          },
          "default_title": "Scratch theme loader",
          "default_popup": "popup.html"
        },
"options_ui": {
            "page": "options.html",
            "chrome_style": true
        },
"web_accessible_resources": ["src/options/options.html"],
    "permissions": [
        "tabs",
        "storage",
        "declarativeContent",
        "https://scratch.mit.edu/*",
        "https://pastebin.com/raw/*"
    ]
}

options.html:

<html>
    <stuff>
</html>

通常情况下,在扩展中不要使用 window.open。要依赖于 chrome.tabschrome.windows,创建并不需要权限。 - Xan
1个回答

8

请使用推荐的方式:chrome.runtime.openOptionsPage(callback)

如果可能的话,打开您的扩展选项页面。具体行为可能取决于您的清单文件中的options_ui或options_page关键字,或者Chrome在特定时间支持什么。例如,页面可能会在新标签页中打开,在chrome://extensions中打开,在应用程序中打开,或者只是聚焦已打开的选项页面。它永远不会导致调用方页面重新加载。如果您的扩展程序没有声明选项页面,或者Chrome由于某些其他原因未能创建选项页面,则回调函数将设置lastError。

https://developer.chrome.com/extensions/runtime#method-openOptionsPage

或者,chrome.tabs.create({ url: "chrome://extensions/?options=" + chrome.runtime.id }, callback)chrome.tabs.create({ url: "options.html" }, callback)


谢谢,当我添加了几个回调函数后,这个工作得很好。 - Melkor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接