我想编写一个chrome扩展名,该扩展名在每次加载新站点时记录当前的活动标签URL,并将其发送到服务器以供进一步使用。到目前为止,我已经设法编写了以下代码: manifest.json
{
"manifest_version": 2,
"name": "Currenturl",
"description": "Fetches current tab url.",
"version": "0.1",
"author": "Tarun Khare",
"browser_action": {
"default_icon": "icon.png",
"default_title": "Just observing your current url."
},
"permissions": ["tabs", "activeTab"],
"background": {
"scripts": ["content.js"],
"persistent": false
}
}
content.js
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
console.log("hello: "+url);
});
我正在使用后台脚本,因为chrome.tabs在内容脚本中不起作用。但是此扩展程序无法在chrome控制台中打印任何内容。有什么问题吗?
答案 0 :(得分:2)
chrome.tabs.onUpdated.addListener((tabId, change, tab) => {
if (change.url) {
console.log(change.url);
}
});
它将在所有标签中报告URL更改。
通过添加对tab.active属性的检查,您还可以将处理限制为仅活动选项卡。
答案 1 :(得分:0)
我尝试根据您提供的信息编写代码。
const tabUpdatelistenerFun = (tabid, changeInfo, tab) => {
const url = changeInfo.url;
if (!url || ['chrome://', 'about://'].some(p => url.startsWith(p))) return false;
const { index, active, highlighted, windowId } = tab;
if (!active) return false;
chrome.tabs.query({ index, highlighted, windowId, lastFocusedWindow: true }, () => {
console.log(url);
})
}
chrome.tabs.onUpdated.addListener(tabUpdatelistenerFun);
我认为这就是你想要的。