以编程方式打开Chrome插件的options.html页面?

dav*_*gan 29 javascript google-chrome google-chrome-extension

有没有办法通过back.html中的Javascript打开Goog​​le Chrome插件的options.html页面?

Xan*_*Xan 49

从Chrome 42开始,有一种新方法启用:

chrome.runtime.openOptionsPage(function callback)

如果可能,请打开Extension的选项页面.

准确的行为可能取决于您的清单options_uioptions_page密钥,或Chrome当时支持的内容.例如,页面可以chrome://extensions在App 中的新选项卡中打开,也可以仅关注打开的选项页面.它永远不会导致调用者页面重新加载.

如果您的扩展程序未声明选项页面,或Chrome由于其他原因未能创建一个选项页面,则回调将设置lastError.

  • 这是正确的方法。人们应该使用这种方式,而不是chrome.tabs.create(... options.html ..) (2认同)

ser*_*erg 48

chrome.tabs.create({ url: "options.html" });
Run Code Online (Sandbox Code Playgroud)

更新

从版本40开始,Chrome现在使用扩展程序管理页面中的新弹出选项对话框而不是专用选项页面(不推荐使用).通过修改URL,您仍可以获得相同的效果.

chrome.tabs.create({ 'url': 'chrome://extensions/?options=' + chrome.runtime.id });
Run Code Online (Sandbox Code Playgroud)

  • 似乎甚至更新现在已经过时了,引入了`chrome.runtime.openOptionsPage()` (11认同)
  • 是的,这有点不推荐使用`chrome.runtime.openOptionsPage()`! (2认同)
  • url 格式已更改,现在是: `"chrome-extension://" + chrome.runtime.id + "/options.html"` (2认同)

NAR*_*KOZ 25

打开或切换到已打开的选项页面(而不是打开副本):

var optionsUrl = chrome.extension.getURL('options.html');

chrome.tabs.query({url: optionsUrl}, function(tabs) {
    if (tabs.length) {
        chrome.tabs.update(tabs[0].id, {active: true});
    } else {
        chrome.tabs.create({url: optionsUrl});
    }
});
Run Code Online (Sandbox Code Playgroud)