Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展内容脚本未触发代码_Javascript_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展内容脚本未触发代码

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

我试图获取用户访问的每个新页面的URL。我发现一个答案是使用
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,事实上,我在问题中遗漏了这一点。你可能想读这本书(大概有一半的问题是因为人们没有读过而被问到的)。