0

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

文档本身有一个完美的 readyState 和一个用于跟踪任何更改的 readystatechange 事件。但是,如果您将 addEventListener 放入文档以获取 readyState 事件并且文档被更新,则 addEventListener 将不再存在,并且永远不会调用该方法。

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

4

2 回答 2

3

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

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

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

于 2012-04-11T08:07:02.983 回答
0

如果您的目标是当前浏览器并且不关心旧版支持,请查看 History API,因为它允许您向用户显示正在访问新页面(地址栏中的 URL 更改并出现 back/fwd按预期工作)而不刷新您的 JavaScript 上下文。

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

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

于 2012-04-11T08:44:34.107 回答