我的扩展程序需要密切关注浏览器[chrome]中非常活跃的标签页的URL。目前,我已经能够跟踪用户从开始加载/重新加载的URL。但是如果有更改标签,则内容脚本不会向后台脚本发送消息并返回任何内容。
实际上我想在用户的标签更改上重新加载content.js脚本。
这是我迄今为止所做的事情:
CONTENT.JS:
// Code here....
chrome.extension.sendMessage({ wants: 'URL' }, function(res) {
var urlResponse = res.url;
});
// Code here....
效果很好,但是这个content.js并没有触发标签更改。相反,它会在同一个标签中更改文档时触发(如访问新链接等)
BACKGROUND.JS:
chrome.extension.onMessage.addListener(
function(script, sender, sendResponse) {
if (script.wants == 'URL') {
sendResponse({ maskedURL: sender.tab.url });
}
}
);
的manifest.json:
{
"manifest_version": 2,
"name": "NAME HERE",
"description": "DESC HERE",
"version": "1.1",
"options_page": "options.html",
"browser_action": {
"default_title": "NAME",
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"icons": { "16": "icon.png",
"48": "icon.png",
"128": "icon.png" },
"permissions": [
"storage",
"<all_urls>",
"tabs"
],
"content_scripts": [
{
"matches": ["http://*/*","https://*/*"],
"js": ["content.js"]
}
],
"web_accessible_resources": [
"bg.png",
"*.woff",
"*.woff2"
],
"background": {
"scripts": ["background.js"]
}
}
谢谢!
编辑:Xan请看看:
答案 0 :(得分:1)
无法正确理解您的问题,但我会尽力澄清。
打开新页面或刷新现有页面时, content.js
运行一次。无法访问当前活动选项卡的详细信息。
如果您想了解标签的任何详细信息,请使用chrome.tabs
background.js
API
chrome.tabs.onActivated.addListener(activeInfo){ //Fired when an active tab is changed
chrome.tabs.query({'active':true,'currentWindow':true},function(array_of_tabs){//Gives details of the active tab in the current window.
alert(array_of_tabs[0].url);
});