我的扩展是针对Facebook。它会在第一次加载时正确记录选项卡状态更改,但如果我通过当前页面上的链接导航到另一个页面,则会立即报告changeinfo.status =='完成'。
我找不到任何暗示我犯了错误
chrome.tabs.onUpdated.addListener(check);
function check(tab_id, changeinfo, tab){
console.log("tab change: " + changeinfo.status);
// make sure the page is done loading
if ( !(tab.url !== undefined && changeinfo.status == "complete")) {
return;
}
if(tab.url.match(/facebook.com\/[^\/]*$/)){ //if the url of the tab matches a certain website
chrome.pageAction.show(tab_id); //show the icon (by default it is not shown).
console.log("accepted state: " + changeinfo.status);
}
}
答案 0 :(得分:1)
如果符合您的需要,您可以尝试使用webNavigation API
清单
"permissions": ["webNavigation"]
后台脚本
chrome.webNavigation.onCompleted.addListener(function(details) {
if (details.url.startsWith('https://www.facebook.com/')) {
chrome.pageAction.show(details.tabId);
}
});
答案 1 :(得分:0)
你没有犯错,facebook会动态加载它的内容。他们使用History API中的history.pushState
更改网址而不重新加载。
我认为您无法使用tabs.onUpdated
获取所需信息,因为状态“完成”#39}。从它的角度来看,实际上是正确的。您可能需要在内容脚本中处理此问题。