javascript - 用户脚本如何获得有关页面上由 ajax 驱动的更改的通知?

标签 javascript userscripts

鉴于网页上的项目随着时间的推移会被 AJAX 调用更改,用户脚本如何在这些更改发生时得到通知?

想象一下 Facebook 新闻源。当您加载页面时,它有 12 个项目。这些元素包裹在 <li><ul> 中包含的标签.当您向下滚动页面时,新的 <li>数据 block 加载到 <ul> .

我想知道如何将此类更改通知用户脚本。

一个想法是不断查询 <ul> ,计算它的项目,并观察这个数字是否变大。可能,但要在发生变化时立即捕捉到变化,它可能必须运行得如此频繁以至于代价太高。

另一个想法是找出触发加载的滚动位置,并观察这种变化。成本较低,但非常具体。

我想知道是否有第三种选择。 每当发生变化时都会通知我的东西。我不仅对提要感兴趣,而且更普遍地对这个概念感兴趣。给定页面上的项目被 AJAX 调用更改,用户脚本如何获得有关这些更改的通知?

最佳答案

劫持发送方法

var oldSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(){
    // do what you need; then send the request
    oldSend.apply(this, arguments);
}

关于javascript - 用户脚本如何获得有关页面上由 ajax 驱动的更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828171/

相关文章:

javascript - 语法错误: missing ; before statement on normal statement

javascript - 无法用 JavaScript 替换文本。请帮忙

firefox-addon - 为什么包裹在 firefox 插件中的用户脚本会比 greasemonkey 中的相同脚本慢?

javascript - 使用用户脚本嵌入图标

javascript - 运行用户脚本时 setInterval 使我的浏览器崩溃?

google-chrome - 如何设置 Chrome 的用户脚本版本号

javascript - 如何覆盖babel的预设插件选项

javascript - React-native 变量与状态

javascript - 为什么我的 jQuery 加载功能不起作用? - 在 Chrome 上

javascript - 通过 css 删除 div 的用户脚本