Javascript 将HTML添加到具有Chrome扩展名的页面

Javascript 将HTML添加到具有Chrome扩展名的页面,javascript,google-chrome-extension,Javascript,Google Chrome Extension,好的,这是我想要我的分机做的。我想它添加一些HTML到一个页面(标签,按钮等) 这是我所拥有的 content.js(它实际上尝试添加标签而不是按钮) 我的问题是,我做错了什么?我的清单应该是什么样子这就是我现在拥有的 manifest.json { "name": "Extension", "version": "1.0", "description": "Does Stuff", "background": { "scripts": ["bac

好的,这是我想要我的分机做的。我想它添加一些HTML到一个页面(标签,按钮等)

这是我所拥有的

content.js(它实际上尝试添加标签而不是按钮)

我的问题是,我做错了什么?我的清单应该是什么样子这就是我现在拥有的

manifest.json

{
    "name": "Extension",
    "version": "1.0",
    "description": "Does Stuff",
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "page_action": {
        "default_icon": "icon-19.png"
    },
    "permissions": [
        "http://*/*",
        "https://*/*",
        "tabs"
    ],
    "icons": {
        "48": "icon-48.png",
        "128": "icon-128.png"
    },
    "content_scripts": [{
        "matches": ["http://*/*", "https://*/*"],
        "js": ["content.js"]
    }],
    "manifest_version": 2
}

谢谢

您指出您只希望在
background.js
中确定的某些页面上使用此选项。这意味着您可以从清单中删除内容脚本,并且我认为您还可以将
选项卡
权限更改为。仍然存在这样一个问题:标签是应该始终加载到这些页面上,还是仅在用户操作之后加载

如果标签应该一直存在,那么您希望
background.js
(它将在每次页面加载时运行)调用
chrome.tabs.executeScript
来加载
content.js
(),而不再需要您添加的侦听器

如果标签应显示为用户操作的结果,则听起来您需要一个标签。除上述内容外,
background.js
应调用
chrome.pageAction.show(tabId)
以显示页面操作图标,并使用
chrome.pageAction.onClicked.addListener(loadScriptFunction)
调用
executeScript



编辑:我想我终于能够诊断出您的尝试哪里出错了。谷歌没有指定何时执行
background.js
,但似乎很少(扩展启动?),而且肯定不是在
content.js
之后。如果将裸露的
addButton(“addButton”)
包装在
chrome.pageAction.onClicked.addListener
中,则它似乎可以工作。

是否需要页面操作(仅在某些页面上,单击omnibox中的图标时执行)或内容脚本(在所有匹配页面上,在页面加载时发生)?我只希望它发生在某些页面上。我将决定在后台哪些页面。js有人能给我一个简单的例子,在页面上添加一个按钮吗?我已经阅读了谷歌提供的文档,但没有一个解决我的问题。你的问题可能是
chrome.runtime.onMessage.addListener
已被弃用,而你需要
chrome.runtime.onMessage.addListener
?我正在使用chrome declaritiveContent来确定扩展中的某些规则。在本例中,我决定在哪些页面上显示pageaction图标,一旦我知道如何显示,就在该页面上插入标签。标签将始终加载,无需用户操作。要插入标签的唯一条件是标签是否位于某个页面上。如果您可以将规则简化为只包含相应页面的URL,则可以使用
内容\u脚本。将清单中的
条目匹配为包含
内容.js
,并完全消除对
背景.js
的需要。
addButton("addButton");

function addButton(action) {
    chrome.tabs.getSelected(null, function(tab) {
        chrome.tabs.sendRequest(tab.id, {
            action: action,
            tabid: tab.id
        }, function(response) {});
    });
}
{
    "name": "Extension",
    "version": "1.0",
    "description": "Does Stuff",
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "page_action": {
        "default_icon": "icon-19.png"
    },
    "permissions": [
        "http://*/*",
        "https://*/*",
        "tabs"
    ],
    "icons": {
        "48": "icon-48.png",
        "128": "icon-128.png"
    },
    "content_scripts": [{
        "matches": ["http://*/*", "https://*/*"],
        "js": ["content.js"]
    }],
    "manifest_version": 2
}