Chrome扩展程序检测Google搜索刷新

电池

我的内容脚本如何检测Google搜索的刷新?我相信这是页面的AJAX重新加载,而不是“真实的”刷新,因此我的事件不会检测到刷新。

是否可以在Google Chrome扩展程序和Firefox WebExtensions附加组件中以某种方式检测到它?

wOxxOm

Google搜索是一个动态更新的页面。存在几种检测更新的著名方法:MutationObserver,基于计时器的方法(请参见waitForKeyElements包装器)以及该站点使用的事件,例如GitHub上的pjax:end。

幸运的是,Chrome浏览器中的Google搜索使用message事件,因此这是我们的内容脚本:

window.addEventListener('message', function onMessage(e) {
    // console.log(e);
    if (typeof e.data === 'object' && e.data.type === 'sr') {
        onSearchUpdated();
    }
});

function onSearchUpdated() {
    document.getElementById('resultStats').style.backgroundColor = 'yellow';
}

例如,此方法依赖于未记录的站点功能,该功能在Firefox中不起作用。

Chrome扩展程序和WebExtensions可用的更可靠的跨浏览器方法是监视页面url的更改,因为Google搜索结果页面始终会更新其URL哈希部分。我们需要一个背景/事件页面chrome.tabs.onUpdated侦听器和消息传递

  • background.js

    var rxGoogleSearch = /^https?:\/\/(www\.)?google\.(com|\w\w(\.\w\w)?)\/.*?[?#&]q=/;
    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        if (rxGoogleSearch.test(changeInfo.url)) {
            chrome.tabs.sendMessage(tabId, 'url-update');
        }
    });
    
  • content.js

    chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
        if (msg === 'url-update') {
            onSearchUpdated();
        }
    });
    
    function onSearchUpdated() {
        document.getElementById('resultStats').style.backgroundColor = 'yellow';
    }
    
  • manifest.json:背景/事件页面内容脚本声明,"tabs" 权限

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Chrome扩展程序:检测Google文档中的按键

Chrome扩展程序检测扩展程序内的按钮

如何在Google Chrome扩展程序的HTML页面中添加常规Google搜索栏?

更新Google Chrome扩展程序

Google Chrome扩展程序错误

Google Chrome DevTools扩展-检测页面更改

按ID反向搜索Chrome扩展程序

Chrome 扩展程序是否可以检测 Chromebook 上是否启用或禁用了 Google Play 商店?

如何通过扩展程序检测Google Chrome中页面标题的更改?

是否可以使用Google Chrome扩展程序更改默认搜索引擎?

是否有Chrome扩展程序可从Google搜索结果中删除某些域/网站?

在Chrome扩展程序中使用的所有Google搜索域的确定/当前列表?

Chrome扩展程序自动刷新选项页面用户界面

Chrome扩展程序:如何根据标签标题刷新标签?

Chrome扩展程序:仅在刷新后,后台脚本才会启动

在Chrome扩展程序中提交的表单上刷新弹出窗口

创建的iframe与扩展程序,Google Chrome扩展程序之间的通信

如何检测首次安装 Chrome 扩展程序的时间

Chrome 扩展程序 vue-devtools 未检测到 Vue

检测用户是否安装了Chrome扩展程序

Firefox中的Google Chrome扩展程序

如何卸载此Google Chrome扩展程序?

Google Chrome扩展程序-脚本注入

监视Google Chrome扩展程序发出的请求

如何查看Google Chrome扩展程序的来源?

Chrome 扩展程序更改 google serp 分页

Chrome扩展程序-Google API的Javascript起源

每个标签的会话-Google Chrome扩展程序

Google Chrome 扩展程序不显示图标