选项页面可以在 Opera 扩展中有页面操作吗?
Can an Options page have a page action in an Opera extension?
我有一个 Google Chrome 扩展,我想将其转换为 Opera 扩展。部分功能是选项页面有页面操作。
manifest.json:
{
"name": "Option Page Action",
"version": "0",
"manifest_version": 2,
"options_page": "options.html",
"background": { "scripts": [ "background.js" ] },
"page_action": {}
}
options.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="options.js"></script>
</head>
<body>
<p>
I have a page action in Google Chrome, but not in Opera.
</p>
</body>
</html>
options.js:
chrome.runtime.connect();
background.js:
chrome.runtime.onConnect.addListener(function(port) {
chrome.pageAction.show(port.sender.tab.id);
});
在 Chrome 中,这工作正常。在 Opera 中,页面操作不会出现。调试显示 show(tabId)
被调用,并且没有抛出错误。但是页面动作没有出现。由于 Opera 扩展(出于这些目的)与 Chrome 扩展相同,我不明白为什么会有差异,以及如何克服它。有什么方法可以在我的选项页面上执行页面操作吗?
Opera 不显示 URL 扩展页面。这也曾在 Chrome 中发生过 (crbug.com/72021),但它已在 Chrome 28 中得到修复。Opera 出于某种原因尚未应用该补丁。
如果选项页面上的页面操作很重要,您可以在 public 网站上托管选项页面,并使用 content script 将功能注入该页面。您甚至可以将空白页面用作网站并通过该内容脚本插入 HTML & CSS。
我有一个 Google Chrome 扩展,我想将其转换为 Opera 扩展。部分功能是选项页面有页面操作。
manifest.json:
{
"name": "Option Page Action",
"version": "0",
"manifest_version": 2,
"options_page": "options.html",
"background": { "scripts": [ "background.js" ] },
"page_action": {}
}
options.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="options.js"></script>
</head>
<body>
<p>
I have a page action in Google Chrome, but not in Opera.
</p>
</body>
</html>
options.js:
chrome.runtime.connect();
background.js:
chrome.runtime.onConnect.addListener(function(port) {
chrome.pageAction.show(port.sender.tab.id);
});
在 Chrome 中,这工作正常。在 Opera 中,页面操作不会出现。调试显示 show(tabId)
被调用,并且没有抛出错误。但是页面动作没有出现。由于 Opera 扩展(出于这些目的)与 Chrome 扩展相同,我不明白为什么会有差异,以及如何克服它。有什么方法可以在我的选项页面上执行页面操作吗?
Opera 不显示 URL 扩展页面。这也曾在 Chrome 中发生过 (crbug.com/72021),但它已在 Chrome 28 中得到修复。Opera 出于某种原因尚未应用该补丁。
如果选项页面上的页面操作很重要,您可以在 public 网站上托管选项页面,并使用 content script 将功能注入该页面。您甚至可以将空白页面用作网站并通过该内容脚本插入 HTML & CSS。