Google Chrome扩展程序问题:popup.html干扰了background.html中的脚本执行

时间:2011-04-03 17:35:15

标签: google-chrome-extension

我正在学习如何扩展Google Chrome并遇到以下问题:

我有以下清单文件:

{
    "name": "My First Extension",
    "version": "1.0",
    "description": "The first extension that I made.",
    "background_page": "background.html",
    "browser_action": {
        "default_icon": "icon.png", 
        "popup": "popup.html"
     },
    "permissions": [
    "tabs",
        "http://*/*",
        "https://*/*"
    ]
 }

我的background.html文件只是在页面中注入了一些简单的JavaScript:

<script>
    // Called when the user clicks on the browser action.
    chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.tabs.executeScript(null, {code:"alert(\"hi from background CODE\");"});
    });
</script>

我的popup.html文件只是简单的HTML:

<body>
    Sup Playa
</body>

来自background.html的对话框永远不会显示。 popup.html按预期运行。

但是,当我从清单文件中注释掉popup.html时,background.html中的脚本可以正常工作。

我做错了什么?为什么对话框和弹出窗口都不显示?

1 个答案:

答案 0 :(得分:4)

正如docs中所述:

  如果浏览器操作有弹出窗口,

onClicked事件将不会触发。

因此,如果您将任何html文件分配给弹出窗口"popup": "popup.html"(而不仅仅是没有正文的按钮),则不会触发onClicked事件。

如果您想在每次打开时执行某些操作,您可以将代码直接放入popup.html(它具有与后台页面相同的权限):

chrome.tabs.executeScript(null, {code:"alert(\"hi from background CODE\");"});