Chrome浏览器操作点击无效

问题描述 投票:26回答:6

我正在尝试创建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版本,但它与发布的版本完全相同(相同的版本号)。这可能是个问题吗?

javascript html google-chrome
6个回答
46
投票

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


4
投票

你需要删除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();

我希望这对你有所帮助。


1
投票

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


1
投票

我找到了问题的根本原因: - MDN

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

从manifest.json中删除了deafult_popup

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

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();
});

应该管用


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.