回答
谷歌自定义搜索引擎使用定时器来确认散列与先前值,同时在一个单独的域孩子的iframe更新家长的位置哈希包含iframe的文档的身体尺寸。当计时器捕捉到更改时,父级可以调整iframe的大小以匹配正文的大小,以便不显示滚动条。
像下面这样实现相同的:
var storedHash = window.location.hash;
window.setInterval(function() {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100); // Google uses 100ms intervals I think, might be lower
谷歌的Chrome 5,Safari 5的,Opera 10.60,Firefox 3.6和Internet Explorer 8所有支持hashchange
事件:
if ("onhashchange" in window) // does the browser support the hashchange event?
window.onhashchange = function() {
hashChanged(window.location.hash);
}
,并把它在一起:
if ("onhashchange" in window) { // event supported?
window.onhashchange = function() {
hashChanged(window.location.hash);
}
}
else { // event not supported:
var storedHash = window.location.hash;
window.setInterval(function() {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100);
}
jQuery还有一个插件,它将检查hashchange事件并在必要时提供它自己的 - http://benalman.com/projects/jquery-hashchange-plugin/。
编辑:更新浏览器支持(再次)。
从我在其他的做题看,唯一可行的跨浏览器的解决方案是一个计时器。例如,请查看this question。
这是关于DOM变化。 – rsman 2017-09-20 12:11:32
setInterval()
是目前唯一的通用解决方案。但也有在未来的一段光的hashchange event
供参考:'onhashchange'事件[Mozilla开发者网络文档](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange) – 2015-05-28 05:15:21
形式(只是为了记录。)的YUI3“hashchange”合成事件做更多的还是同样的事情少为接受的答案
YUI().use('history-hash', function (Y) {
Y.on('hashchange', function (e) {
// Handle hashchange events on the current window.
}, Y.config.win);
});
- 1. UIPopover:定位更改处理
- 2. 在场景事件处理程序中更改QGraphicsItems的位置?
- 3. Surface SDK中ScatterViewItem位置更改的事件处理程序?
- 4. 在React中处理URL更改
- 5. 事件enyo处理的js
- 6. 地理定位器位置更改事件
- 7. 如何处理在JS ||中更改对象变量的事件JQuery的?
- 8. 处理.NET DataGridViewCheckBox更改事件
- 9. 更改处理后事件的颜色
- 10. Sharepoint事件处理..哪列更改?
- 11. NSImageView更改事件处理程序
- 12. 正确处理输入更改事件
- 13. 处理输入文本更改事件
- 14. 处理DataTable.DataRow单元格更改事件
- 15. location.hash更改的事件处理程序?
- 16. Dropkick JS更改事件值未定义
- 17. 更改url角度的位置JS
- 18. Sqldependency在onchange事件中处理多个表中的更改
- 19. 如何只定位与on(更改)事件处理程序关联的类?
- 20. 根据d3.js中的事件处理程序更改文本属性
- 21. 在VC++中处理事件处理程序时更改EditBox的内容mfc
- 22. 如何在一个处理程序中处理多个更改事件?
- 23. 应该在哪里处理listview中的数据更改事件?
- 24. 在事件处理函数中更改变量的值
- 25. 在文本字段中处理测试更改的事件swift
- 26. 在主干模型中如何处理“更改”事件?
- 27. 在javascript中处理自定义事件
- 28. 处理Js远程pde URL
- 29. jquery或js事件处理程序?
- 30. EXT JS 4 - itemclick叶子事件处理
为了完整性,将'var storedHash = window.location.hash;'添加到放置在一起的汇总块中。顺便说一句:现在这被称为polyfill我认为。 – 2013-03-31 14:58:36
现在,你可以在'window'上监听'hashChange' http://stackoverflow.com/questions/6390341/how-to-detect-url-change – 2013-10-08 19:55:33
@Timo:你......没看过我的答案,你是否? :-P – 2013-10-08 22:14:47