Javascript 铬:页面操作不工作
我正在尝试制作我的第一个chrome扩展,我希望我的扩展只出现在特定的页面上,所以我使用了Javascript 铬:页面操作不工作,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在尝试制作我的第一个chrome扩展,我希望我的扩展只出现在特定的页面上,所以我使用了page\u action manifest.json { "name": "First", "version": "1.0", "manifest_version": 2, "description": "First extension", "page_action": { "default_icon": "icon.png",
page\u action
manifest.json
{
"name": "First",
"version": "1.0",
"manifest_version": 2,
"description": "First extension",
"page_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions" : [
"tabs"
]
}
popup.html
<html>
<head>
<script src="test.js"></script>
</head>
<body> Some other logic </body>
</html>
现在,当我打开google.com
加载扩展后,图标不会出现,我的javascript函数也不会被调用
那么,在这种方法中,我错在哪里呢
Chromium版本
24.0.1312.2 Ubuntu 12.04(165266)
要使其正常工作,您需要有一个后台脚本来监听选项卡更新。您应该像这样更新清单:
{
"name": "First",
"version": "1.0",
"manifest_version": 2,
"description": "First extension",
"background": { "scripts": ["test.js"] },
....
此外,您正在函数内部设置侦听器,因此它永远不会被执行
将其移出功能,它应该可以工作
function check(tab_id, data, tab){
if(tab.url.indexOf("google") > -1){
chrome.pageAction.show(tab_id);
alert("inside");
}
};
chrome.tabs.onUpdated.addListener(check);
我把功能移到了外面,它也不工作了。当我打开
google.com
时,我在地址栏中看不到任何图标。好的,我在我的电脑上试过了,看起来我们需要一个背景脚本来检查选项卡更新。请参阅我更新的答案。@Noob:原因是内容脚本有一些限制,其中之一是。@keune:成功了。你能给我解释一下内容和背景脚本之间的区别吗。如果我想做一些DOM操作
相关代码应该在背景或内容脚本中?好的,内容脚本用于修改当前页面。它可以访问DOM,因此无论何时您想要更改DOM,都应该在内容脚本中进行更改。后台脚本可以访问其他浏览器功能,如打开新选项卡、获取其URL等。请查看官方API页面:
function check(tab_id, data, tab){
if(tab.url.indexOf("google") > -1){
chrome.pageAction.show(tab_id);
alert("inside");
}
};
chrome.tabs.onUpdated.addListener(check);