我正在尝试写一个JavaScript脚本,这是“覆盖”在一个脸书页面上。它使用DOMContentLoaded来检测何时加载内容,然后在中添加一些额外内容。但是,因为Facebook在转到新页面时并不真正“重新加载”页面(它只是使用AJAX),所以DOMContentLoaded处理程序不会再次运行,即使有新的内容需要查看。
无论如何,为了检测这个变化,我考虑过使用onhashchange,因为Facebook过去经常改变页面的哈希值,但是在Firefox4中(我需要支持Firefox3和更高版本的版本,但没有其他浏览器),Facebook不再改变哈希值,并且在Firefox3.6之前的版本中没有onhashchange。
我考虑过使用DOMNodeInserted,但这真的会减慢页面速度吗?(我真的不能在这个脚本中有任何减慢。)
发布于 2010-12-30 07:03:28
对于轻量级页面,它通常没有明显的效果。然而,在笨重的页面上(我在gmail上尝试过),它真的真的很慢,以至于我甚至不能流畅地撰写消息。该事件被添加到一个非常简单的span元素中,该元素中只有一个链接。像DOMNodeInserted和DOMSubTreeModified这样的活动是真正的精彩表演。
更新:对于那些试图找到这个问题的答案的人,请注意,这些方法DOMNodeInserted (或DOMSubtreeModified)确实存在性能问题,因此根据新的ECMA规范,它是一个更快的侦听器: MutationObserver,用于做相同的事情(甚至更多)。
发布于 2011-01-22 13:50:29
您可能想要监视windows.history对象,有关facebook如何使用它来更新页面,请参阅以下答案:"Redirect" page without refresh (Facebook photos style)
https://stackoverflow.com/questions/4535531
复制相似问题