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