我做错了什么?我想在点击“Show me some foo”时运行一个函数。
manifest.json browser_action
"browser_action": {
"default_icon": "img/icon.png",
"default_popup": "popup.html"
},
popup.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/popup.js"></script>
</head>
<body>
<div class="changes">
<span class="reset"><a href="#" title="Get some foo!" id="foo">Show me some foo</a>
</span>
</div>
</body>
</html>
popup.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,
{file:"reset.js"});
});
reset.js
var el = document.getElementById('foo');
el.onclick = showFoo;
function showFoo() {
alert('I am foo!');
return false;
}
完整的manifest.json文件
{
"name": "App name",
"version": "1.0.2",
"manifest_version": 2,
"description": "Desc.",
"permissions": [
"tabs"
],
"browser_action": {
"default_icon": "img/icon.png"
},
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "img/icon.png",
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": ["js/myscript.js"],
"exclude_matches":[
"http://site.com/*"
]
}
],
"web_accessible_resources": [
"chrome_ex_oauth.html"
]
}
答案 0 :(得分:1)
我不确定你要做什么,但我会向你解释你的代码:
browserAction
popup.html
的脚本已加载popup.js
加载并注册了一个监听器chrome.browserAction.onClicked.addListener
browserAction
)pupup.html
页面已卸载chrome.browserAction.onClicked.addListener
侦听器未注册正如您所见,reset.js
永远不会被加载,因为它永远不会被注入。更重要的是,您不能在同一个扩展程序中使用popup.html
和chrome.browserAction.onClicked.addListener
(“如果浏览器操作有弹出窗口,则不会触发此事件。”source)。
您可能希望将chrome.browserAction.onClicked.addListener
放入后台页面,以便在点击reset.js
时将browserAction
注入当前页面。而且,正如我上面提到的,要使chrome.browserAction.onClicked.addListener
解雇,你需要从清单中删除"default_popup": "popup.html"
。
如果你想向popup.html
注入一个脚本 - 它没有多大意义。您可以完全控制popup.html
,只需将reset.js
放入<head>
。