回答
谷歌自定義搜索引擎使用定時器來確認散列與先前值,同時在一個單獨的域孩子的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