Chrome浏览器操作点击无效

And*_*yuk 29 html javascript google-chrome

我正在尝试创建chrome扩展,但是我的浏览器操作点击不起作用!我几乎尝试了一切.这是我的设置:

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"
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

但无论我点击图标有多难,都没有任何反应,并且"HELLO"没有在控制台中打印出来!

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

Moh*_*our 49

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

  • 那是正确的.Popup完全消除了onclick事件!我花了两天时间来弄清楚这一点. (6认同)
  • Chrome扩展团队中是否有人听说过POLA?https://en.wikipedia.org/wiki/Principle_of_least_astonishment (3认同)
  • Chrome的扩展文档很烂 (2认同)
  • 有谁知道是否有解决方法可以让弹出窗口对当前选项卡执行某些操作?例如,我单击弹出图标,选择一种颜色,它会更改当前选项卡的背景颜色。 (2认同)

use*_*487 9

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

\n\n
\n

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

\n
\n\n

从manifest.json中删除了deafult_popup

\n\n
"browser_action": {\n    "default_icon": "img/icon.png",\n    "default_popup": "popup.html"\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

  • 他们无法记录那些不那么突出的整洁的小细节...... (4认同)

小智 5

您需要删除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
    }
Run Code Online (Sandbox Code Playgroud)

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

好吧,我希望这对你有帮助。