Javascript.如何检测 window.document 何时发生更改



window.document经常被悄悄地更改,例如,当你从一个URL移动到另一个url或当你调用document.reload(true)时;

文档本身有一个完美的readyState和一个readystatechange事件来跟踪任何更改。但是,如果将 addEventListener 放入 readyState 事件的文档,并且文档得到续订,则 addEventListener 将不再存在,并且永远不会调用该方法。

所以我喜欢每次在窗口对象中更新文档时附加一个。那么有没有办法检测到这一点呢?

您必须在每个

网页中都存在自己的 javascript,以便脚本可以在加载每个页面时重新安装事件处理程序,或者您必须从浏览器插件执行此操作,该插件可以在加载每个页面时对其进行监视。

根据定义,加载新页面时会清除页面中的所有脚本,因此不可能将一个页面中的脚本保存到下一页中。

另一个想法:如果所有感兴趣的页面都位于同一域和您的域中,则可以拥有一个父框架,该父框架定期监视子框架,并在每次文档更改时不断重置其上的事件处理程序。 但是,由于同源策略安全限制,这只有在所有帧都位于同一域中时才有效。

如果您的目标是当前的浏览器并且不关心旧版支持,请查看历史记录 API,因为它允许您向用户显示要转到新页面(地址栏中的 URL 更改,back/fwd 似乎按预期工作),而无需刷新您的 JavaScript 上下文。

在此处查看演示:http://html5demos.com/history

并在此处阅读更多相关信息:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

最新更新