我想编写一个Chrome扩展名,它可以获取活动标签的URL。我希望它始终在该人的当前活动窗口的活动选项卡上显示该人正在查看的当前网站。我在后台脚本中使用以下代码:
chrome.tabs.onActivated.addListener( function(activeInfo){
chrome.tabs.get(activeInfo.tabId, function(tab){
y = tab.url;
console.log("you are here: "+y);
});
});
每当我更改浏览器中的活动标签时,此代码都会显示当前的url。但是,如果我通过单击或键入来手动更改活动的选项卡URL,它将无法注册新的URL,并且只有在我们在选项卡之间切换并返回此选项卡时才会这样做。我想检测两种情况。我应该如何更改代码?
答案 0 :(得分:1)
下面是处理这两种情况的脚本:
chrome.tabs.onActivated.addListener( function(activeInfo){
chrome.tabs.get(activeInfo.tabId, function(tab){
y = tab.url;
console.log("you are here: "+y);
});
});
chrome.tabs.onUpdated.addListener((tabId, change, tab) => {
if (tab.active && change.url) {
console.log("you are here: "+change.url);
}
});
答案 1 :(得分:0)
您应该使用chrome.tabs.onUpdated.addListener
API
const getActiveUrl = (tabid, changeInfo, tab) => {
const url = changeInfo.url;
// url is likely to be empty, and filter chrome:// and about:// URLs
if (!url || ['chrome://', 'about://'].some(p => url.startsWith(p))) return;
// filtering is not an active tab
if (!tab.active) return;
// the url address you need
console.log(url);
}
chrome.tabs.onUpdated.addListener(getActiveUrl);