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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

使用我的Chrome扩展程序更改Google搜索页的背景

来自分类Dev

通过Chrome扩展程序绕过iFrame检测

来自分类Dev

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

来自分类Dev

使用popup.js中的信息刷新background.js-Google Chrome扩展程序

来自分类Dev

Google Chrome扩展程序错误

来自分类Dev

更新Google Chrome扩展程序

来自分类Dev

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

来自分类Dev

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

来自分类Dev

搜索结果中的Chrome扩展程序图标

来自分类Dev

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

来自分类Dev

为什么Google Cast Chrome扩展程序仅通过mDNS搜索链接本地设备?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Chrome扩展程序:重新加载后检测标头

来自分类Dev

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

来自分类Dev

从Chrome扩展程序访问Google文档

来自分类Dev

对绑定Google Chrome扩展程序的操作

来自分类Dev

Google Chrome扩展程序HTTPS Ajax请求

来自分类Dev

通过脚本安装Google Chrome扩展程序

来自分类Dev

在chrome扩展程序中包括google analytics

来自分类Dev

Google Chrome扩展程序热门网站图片

来自分类Dev

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

来自分类Dev

从Chrome扩展程序调用Google Apps脚本

来自分类Dev

在Chrome扩展程序中使用Google图表

Related 相关文章

  1. 1

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

  2. 2

    使用我的Chrome扩展程序更改Google搜索页的背景

  3. 3

    通过Chrome扩展程序绕过iFrame检测

  4. 4

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

  5. 5

    使用popup.js中的信息刷新background.js-Google Chrome扩展程序

  6. 6

    Google Chrome扩展程序错误

  7. 7

    更新Google Chrome扩展程序

  8. 8

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

  9. 9

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

  10. 10

    搜索结果中的Chrome扩展程序图标

  11. 11

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

  12. 12

    为什么Google Cast Chrome扩展程序仅通过mDNS搜索链接本地设备?

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

    Chrome扩展程序:重新加载后检测标头

  20. 20

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

  21. 21

    从Chrome扩展程序访问Google文档

  22. 22

    对绑定Google Chrome扩展程序的操作

  23. 23

    Google Chrome扩展程序HTTPS Ajax请求

  24. 24

    通过脚本安装Google Chrome扩展程序

  25. 25

    在chrome扩展程序中包括google analytics

  26. 26

    Google Chrome扩展程序热门网站图片

  27. 27

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

  28. 28

    从Chrome扩展程序调用Google Apps脚本

  29. 29

    在Chrome扩展程序中使用Google图表

热门标签

归档