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.并保留背景页面,它将工作.
我在 :-\n MDN上找到了问题的根本原因
\n\n\n\n\nbrowser\xe2\x80\x8bAction\xe2\x80\x8b.onClicked:-单击浏览器操作图标时触发。如果浏览器操作有弹出窗口,则不会触发此事件。
\n
从manifest.json中删除了deafult_popup
\n\n"browser_action": {\n "default_icon": "img/icon.png",\n "default_popup": "popup.html"\n }\nRun Code Online (Sandbox Code Playgroud)\n
小智 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();
好吧,我希望这对你有帮助。