Javascript Chrome扩展内容脚本未触发代码
我试图获取用户访问的每个新页面的URL。我发现一个答案是使用Javascript Chrome扩展内容脚本未触发代码,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我试图获取用户访问的每个新页面的URL。我发现一个答案是使用content\u脚本,所以我把它放在清单中: "permissions": [ "tabs" ], "content_scripts": [ { "matches": ["<all_urls>"], "js": ["js/background.js"] } 这是我的background.js文件: chrome.tabs.onUpdated.addListener(function(tabId, change
content\u脚本
,所以我把它放在清单中:
"permissions": [
"tabs"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["js/background.js"]
}
这是我的background.js
文件:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
alert(changeInfo.url);
});
chrome.tabs.onActivated.addListener(function(activeInfo) {
// how to fetch tab url using activeInfo.tabid
chrome.tabs.get(activeInfo.tabId, function(tab){
console.log(tab.url);
});
});
alert("BACON");
在重新加载扩展,然后打开新标签并访问各种网站之后,没有什么会被触发。有人能帮我找出我做错了什么吗?谢谢 根据:
内容脚本有一些限制。他们不能使用chrome.*API,但以下情况除外:
- 扩展名(getURL、inIncognitoContext、lastError、onRequest、sendRequest)
- i18n
- 运行时(connect、getManifest、getURL、id、onConnect、onMessage、sendMessage)
- 储藏
chrome.tabs
API,您应该使用后台页面脚本。
另请注意,根据:
您可以使用大多数chrome.tabs
方法和事件,而无需在扩展名的清单文件中声明任何权限。但是,如果您需要访问tabs.Tab
的url、title或favIconUrl属性,则必须在清单中声明“tabs”
权限
manifest.json
...
"permissions": [
"tabs"
],
"background": {
"scripts": ["background.js"]
},
...
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.status==='loading' && changeInfo.url) {
alert(changeInfo.url);
}
});
根据:
内容脚本有一些限制。他们不能使用chrome.*API,但以下情况除外:
- 扩展名(getURL、inIncognitoContext、lastError、onRequest、sendRequest)
- i18n
- 运行时(connect、getManifest、getURL、id、onConnect、onMessage、sendMessage)
- 储藏
chrome.tabs
API,您应该使用后台页面脚本。
另请注意,根据:
您可以使用大多数chrome.tabs
方法和事件,而无需在扩展名的清单文件中声明任何权限。但是,如果您需要访问tabs.Tab
的url、title或favIconUrl属性,则必须在清单中声明“tabs”
权限
manifest.json
...
"permissions": [
"tabs"
],
"background": {
"scripts": ["background.js"]
},
...
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.status==='loading' && changeInfo.url) {
alert(changeInfo.url);
}
});
我建议你读一下。我建议你读一下。另外,为了进一步澄清,我已经在清单中获得了“标签”权限。解决问题的方法实际上是不使用content_脚本。在清单中声明一个背景脚本实际上解决了这个问题。@Sloganho,事实上,我在问题中遗漏了这一点。您可能想阅读(可以说,大约一半的问题是因为人们没有阅读而被问到的)。另外,为了进一步澄清,我已经在清单中获得了“标签”权限。解决问题的方法实际上是不使用content_脚本。在清单中声明一个背景脚本实际上解决了这个问题。@Sloganho,事实上,我在问题中遗漏了这一点。你可能想读这本书(大概有一半的问题是因为人们没有读过而被问到的)。