3

我正在编写一个 Chrome 扩展程序来分析用户访问的网站。我决定使用 chrome.tabs.onUpdated 来运行我的分析脚本,而不是 manifest.json 中的 content_scripts,因为 chrome.tabs.onUpdated 在 AJAX 重度网站上的页面刷新方面做得更好。

我不需要分析对新的空选项卡或 chrome-extension://(本地)页面的更新,事实上,如果我尝试将脚本注入这些选项卡,则会引发错误。是否有更自动的方法来忽略这些页面,或者我是否必须使用 Try/Catch 块或通过分析 URL 手动执行?我确信我可以手动完成,但似乎应该有一种更自动的方式来完成这项工作。

4

1 回答 1

1

您可以通过过滤掉以下开头的 URL 来忽略所有本地或内部 chrome 扩展 URL 'chrome'

// Listen for changes on tabs
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
    log_console('tab', tab)

    // If tab is not an internal chrome tab
    if (!tab.url.startsWith('chrome')) {
        console.log('Non-internal URL updated")
    }

});

请注意,如果您想访问 URL,则需要您的tabs权限,否则将是并且这将不起作用。如果您无法获得许可,最好的办法可能是在尝试注入时捕获并处理错误。manifest.jsontab.urlundefinedtabs

于 2020-03-25T20:46:29.863 回答