【问题标题】:Attach listener to AJAX event via chrome extension通过 chrome 扩展将监听器附加到 AJAX 事件
【发布时间】:2011-08-02 04:03:47
【问题描述】:

我想为 AJAX 更新附加一个监听器,以便我可以重新加载我的 chrome 扩展。现在,如果用户单击并转到通过 AJAX 加载的站点的另一个部分,则扩展程序不会显示。这个站点不是我的站点,所以我不控制 AJAX 更新。谢谢!

【问题讨论】:

  • 你遇到过这种情况吗?出于不同的原因,我试图解决相同的问题。我真的很想捕捉浏览器收到的任何响应的内容。一定有办法做到这一点,因为chrome中的开发者工具栏做到了,而且我相信它是用javascript实现的。
  • 我认为答案可以帮助你:stackoverflow.com/a/11811558/453767

标签: javascript jquery html ajax google-chrome-extension


【解决方案1】:

你不能监听 ajax 请求(不使用实验性 api),但你可以监听 DOM 被修改时触发的 DOMSubtreeModified 事件:

document.addEventListener("DOMSubtreeModified", function(event){
        //something on the page has changed
});

只需要小心,因为当大块页面被修改时,可能会在几秒钟内触发数百个此类事件。可能需要实施一些延迟。

【讨论】:

  • 谢谢@serg 我已经厌倦了这样做并且它有效,但就像你说的那样它不断触发事件:(我想这不能完成,这很糟糕,因为我要么不得不做一个按钮让我的用户重新加载扩展程序或让他们只需单击浏览器重新加载按钮。无论如何,谢谢!
  • @Garth 您能否更详细地描述您的扩展程序的功能,您正在寻找什么样的 ajax 请求(特定的或任何东西?)以及为什么应该重新加载您的扩展程序? DOMSubtreeModified 会延迟工作吗?
  • 为什么我不能只使用 jquery 并以这种方式附加监听器?
  • @Setheron 您可以通过.live 将侦听器附加到不存在的元素,但是您无法捕捉到该元素何时以这种方式添加到页面中。
  • 是的,我很困惑。我什至尝试绑定到全局“ajaxComplete”事件,但我似乎无法在我的内容脚本中获取事件发生的时间,因此我可以重新注入我的内容脚本
猜你喜欢
  • 2013-11-30
  • 2014-10-27
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
相关资源
最近更新 更多