javascript - 选项页面可以在 Opera 扩展中有页面操作吗?

标签 javascript google-chrome-extension opera-extension

我有一个 Google Chrome 扩展程序,我想将其转换为 Opera 扩展程序。部分功能是选项页面具有页面操作。

list .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) 被调用,并且没有抛出错误。但是页面 Action 没有出现。由于 Opera 扩展(出于这些目的)与 Chrome 扩展相同,我不明白为什么会有差异,以及如何克服它。有没有一种方法可以在我的选项页面上执行页面操作?

最佳答案

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

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

关于javascript - 选项页面可以在 Opera 扩展中有页面操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059697/

相关文章:

javascript - ionic angular app异步函数中 "this"的范围

javascript - Chrome 扩展无法选择 DOM 元素

javascript - onclick加载js数据?

javascript - 难以访问的 JS 环境中的语法错误

javascript - 使用 mozrepl 时 document.getElementById() 返回 null (但在 firebug 中则不然)

javascript - 使用复选框和 Angular 将 true/false 值设置为 localStorage

javascript - Chrome 扩展程序获取元关键字

javascript - Chrome 中的上下文菜单 - 两个操作(左/右键单击项目菜单)

javascript - 为什么 Opera 12 中后台脚本和注入(inject)脚本之间无法发布消息?

javascript - 数组中数字序列的计数