Chrome浏览器操作点击无效

时间:2009-12-21 05:24:38

标签: javascript html google-chrome

我正在尝试创建Chrome扩展程序,但我的browser action点击不起作用!我几乎尝试了一切。这是我的设置:

的manifest.json:

{
"name": "blah",
"version": "1.0",
"description": "blah",
"browser_action": {
  "default_icon": "icon1.png",
  "popup": "popup.html"
 },  
"permissions": [
  "bookmarks",
  "tabs",
  "http://*/*", 
  "https://*/*"    
],
"background_page": "background.html"
}

popup.html:

<html>
<head>
<script>
<!-- Try adding the listener in popup.html  -->
    chrome.browserAction.onClicked.addListener( function(tab){
    console.log("Hello from popup"); // This does not show up either
    } );
 </script>
</head><body>
 Hello
</body>
</html>

background.html:

<html>
<head>
<script>
console.log("Background.html"); // This gets displayed. O.K.

function hello() {
  console.log("HELLO"); // THIS NEVER GETS DISPLAYED
}

// Supposed to Called when the user clicks on the browser action icon.
chrome.browserAction.onClicked.addListener(hello); 
</script>
</head>
</html>

但无论我点击图标有多难,都没有任何事情发生,并且控制台中没有打印出“HELLO”!

我使用的是Chrome 4.0.249.43。我安装了Beta版本,但它与发布的版本完全相同(相同的版本号)。这可能是个问题吗?

6 个答案:

答案 0 :(得分:44)

你不能拥有onclick事件的“弹出窗口”。从清单文件中删除popup.html。并保留背景页面,它将起作用。

答案 1 :(得分:3)

你需要删除popup.html,你在popup.html中已经有一个弹出窗口,理论上background.html应该为browserAction做事件但是错误。当您单击应用程序的图标时,已经在弹出窗口中定义了一个onClicked函数。

我不知道你需要什么,但是当你在浏览器中点击时,你可以做很多功能。

例如:在background.html中执行:

 foo(){
        if(browserAction && browserAction.onClicked) // you can add all stuff that you need.
        do something
    }

你从popup.html用chrome.extension.getBackgroundPage()调用.foo();

我希望这对你有帮助。

答案 2 :(得分:1)

在尝试创建chrome扩展时,我也遇到了一些问题。确保在对manifest.json或后台页面进行任何更改后重新加载扩展。要重新加载,请转到扩展程序页面(扳手&gt;工具&gt;扩展程序)并选择重新加载。这可能只是问题的原因,其他一切看起来都很好。

答案 3 :(得分:0)

根据doc

chrome.browserAction.onClicked.addListener(function(Tab tab) {...});

这样:

// Supposed to be called when the user clicks on the browser action icon.    
chrome.browserAction.onClicked.addListener(function(tab) {
    hello();
});

应该有效

答案 4 :(得分:0)

您确定要查看背景页面的正确JavaScript控制台,而不是其他标签吗?

尝试让hello()方法在后台页面中设置一个全局变量,然后在popup.html中有一个按钮检索该变量(使用chrome.extension.getBackgroundPage())并将其显示为警报。

答案 5 :(得分:0)

我在以下问题上找到了问题的根本原因:- MDN

  

浏览器动作.onClicked:-:单击浏览器动作图标时触发。如果浏览器操作弹出,则不会触发此事件。

从manifest.json中删除了deafult_popup

"browser_action": {
    "default_icon": "img/icon.png",
    "default_popup": "popup.html"
  }