Javascript 域节点插入或哈希更改

Javascript 域节点插入或哈希更改,javascript,facebook,hashchange,mutation-events,Javascript,Facebook,Hashchange,Mutation Events,我正在尝试编写一个JavaScript脚本,它“覆盖”在Facebook页面的顶部。它使用DOMContentLoaded来检测何时加载内容,然后在中添加一些额外的内容。然而,由于Facebook在进入新页面时实际上不会“重新加载”页面(它只是使用AJAX),因此DOMContentLoaded处理程序不会再次运行,即使有新的内容需要查看 无论如何,为了检测这种变化,我考虑过使用onhashchange,因为Facebook曾经更改过页面的哈希值,但是在Firefox4中(我需要支持Firefo

我正在尝试编写一个JavaScript脚本,它“覆盖”在Facebook页面的顶部。它使用DOMContentLoaded来检测何时加载内容,然后在中添加一些额外的内容。然而,由于Facebook在进入新页面时实际上不会“重新加载”页面(它只是使用AJAX),因此DOMContentLoaded处理程序不会再次运行,即使有新的内容需要查看

无论如何,为了检测这种变化,我考虑过使用onhashchange,因为Facebook曾经更改过页面的哈希值,但是在Firefox4中(我需要支持Firefox3和更高版本,但没有其他浏览器),Facebook不再更改哈希值,在Firefox 3.6之前的版本中也没有onhashchange


我曾考虑过使用DOMNodeInserted,但这真的会降低页面速度吗?(我真的不能在这个脚本中有任何减速。)

对于轻量级页面,它通常没有明显的效果。然而,在庞大的页面上(我在gmail上试用过),它会让我的速度非常慢,甚至无法流畅地撰写一条消息。这个事件被添加到一个非常简单的跨度元素中,这个元素只有一个链接。像DOMNodeInserted和DOMSubTreeModified这样的事件都是真正的节目停止

更新:对于所有试图找到答案的人,请注意这些方法DOMNodeInserted(或domsubtredemodified)确实存在性能问题,因此根据新的ECMA规范,它是一个更快的侦听器:MutationObserver,用于做同样的事情(以及更多)


您可能希望监视windows.history对象,请参阅以下关于facebook如何使用它更新页面的答案:

是否有其他人尝试实施域节点插入?速度/响应能力是否存在问题?(我有一个相当大的回调函数)