1

我有一个想要转换为 Opera 扩展的 Google Chrome 扩展。部分功能是选项页面具有页面操作。

清单.json:

{
    "name": "Option Page Action",
    "version": "0",
    "manifest_version": 2,
    "options_page": "options.html",
    "background": { "scripts": [ "background.js" ] },
    "page_action": {}
}

选项.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>

选项.js:

chrome.runtime.connect();

背景.js:

chrome.runtime.onConnect.addListener(function(port) {
    chrome.pageAction.show(port.sender.tab.id);
});

在 Chrome 中,这可以正常工作。在 Opera 中,页面操作不会出现。调试显示它show(tabId)被调用,并且不会引发错误。但是页面动作没有出现。由于 Opera 扩展(出于这些目的)与 Chrome 扩展相同,我不明白为什么会有差异,以及如何克服它。有没有办法可以在我的选项页面上进行页面操作?

4

1 回答 1

3

Opera 不显示扩展页面的 URL。这曾经也发生在 Chrome ( crbug.com/72021 ) 中,但它已在 Chrome 28 中修复。由于某种原因,Opera 没有应用该补丁。

如果在选项页面上进行页面操作很重要,您可以在公共网站上托管选项页面,并使用内容脚本在该页面中注入功能。您甚至可以将空白页面用作网站,并通过该内容脚本插入 HTML 和 CSS。

于 2015-06-25T21:46:10.943 回答