Javascript 铬:页面操作不工作

Javascript 铬:页面操作不工作,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试制作我的第一个chrome扩展,我希望我的扩展只出现在特定的页面上,所以我使用了page\u action manifest.json { "name": "First", "version": "1.0", "manifest_version": 2, "description": "First extension", "page_action": { "default_icon": "icon.png",

我正在尝试制作我的第一个chrome扩展,我希望我的扩展只出现在特定的页面上,所以我使用了
page\u action

manifest.json

{
    "name": "First",
    "version": "1.0",
    "manifest_version": 2,
    "description": "First extension",

    "page_action": {

        "default_icon": "icon.png",
        "default_popup": "popup.html"
    },

    "permissions" : [
        "tabs"
    ]
}
popup.html

<html>
    <head>
        <script src="test.js"></script>
    </head>
    <body> Some other logic </body>
</html>
现在,当我打开
google.com
加载扩展后,图标不会出现,我的javascript函数也不会被调用

那么,在这种方法中,我错在哪里呢


Chromium版本
24.0.1312.2 Ubuntu 12.04(165266)

要使其正常工作,您需要有一个后台脚本来监听选项卡更新。您应该像这样更新清单:

{
    "name": "First",
    "version": "1.0",
    "manifest_version": 2,
    "description": "First extension",
    "background": { "scripts": ["test.js"] },
    ....
此外,您正在函数内部设置侦听器,因此它永远不会被执行

将其移出功能,它应该可以工作

function check(tab_id, data, tab){
    if(tab.url.indexOf("google") > -1){
        chrome.pageAction.show(tab_id);
        alert("inside");

    }

};

chrome.tabs.onUpdated.addListener(check);

我把功能移到了外面,它也不工作了。当我打开
google.com
时,我在
地址栏中看不到任何图标。好的,我在我的电脑上试过了,看起来我们需要一个背景脚本来检查选项卡更新。请参阅我更新的答案。@Noob:原因是
内容脚本
有一些限制,其中之一是。@keune:成功了。你能给我解释一下
内容和背景脚本之间的区别吗。如果我想做一些
DOM操作
相关代码应该在背景或内容脚本中?好的,内容脚本用于修改当前页面。它可以访问DOM,因此无论何时您想要更改DOM,都应该在内容脚本中进行更改。后台脚本可以访问其他浏览器功能,如打开新选项卡、获取其URL等。请查看官方API页面:
function check(tab_id, data, tab){
    if(tab.url.indexOf("google") > -1){
        chrome.pageAction.show(tab_id);
        alert("inside");

    }

};

chrome.tabs.onUpdated.addListener(check);