【发布时间】:2011-09-06 20:23:03
【问题描述】:
我正在尝试为某个网站执行内容脚本(注入按钮或更改链接),但是我想在用户浏览网站时执行此操作。
问题是网页是在用户浏览时使用 ajax 请求动态构建的。
我之前在我编写的扩展程序中通过将我的 JavaScript 实际注入网页中解决了这个问题。
我想知道是否有更好的选择,而不是在我的内容脚本中注册一个 ajaxComplete 事件或类似的东西,以便我可以重新执行。
我可以做到以下几点:
function listener()
{
console.debug("listener fired.");
}
document.addEventListener("DOMSubtreeModified", listener, false);
但是在一个页面加载过程中触发的次数太多了。
【问题讨论】:
-
如果网站使用哈希 (
#...) 或新的 HTML5 历史 API,则需要查找某些事件(onhashchange、onpopstate)。 -
他们不是。供参考的网站是beatport
-
在 Chrome 上,我可以看到 URL 发生了变化,而页面没有离开。我怀疑他们确实使用了历史 API。他们在源代码中使用
history.pushState。 -
如何查找这些事件?我不怎么做JS
-
@pimvdb:他们只是在第一次加载时推送一次状态。导致 URL 更改的每次点击都不会触发额外的推送
标签: javascript ajax google-chrome-extension dom-events