1
我發現這個和平的代碼在網絡上的一些地方。 我試了一下,它工作正常:onHashChange:原生Javascript功能運行良好,但!
var onHashChange = function(event) {
//get hash function
var getHashValue = function() {
var arr = window.location.hash.split("#");
var hasValue = arr[1];
//sets default
if (typeof hasValue == "undefined") {
return false;
}
var hashLen = hasValue.indexOf("?");
if(hashLen>0){
hasValue = hasValue.substring(0,hashLen);
}
return hasValue;
}
//last hash
var lastHash = getHashValue();
//checker
(function watchHash() {
var hash = getHashValue();
if (hash !== lastHash) {
event();
lastHash = hash;
}
var t = setTimeout(watchHash, 100);
})();
}
但是當將在onHashChange
很多時候被調用的函數,它會重複,直到永遠。
onHashChange(function() {
console.log("changed");
});
上午時在同一頁面和hash
被改變,console.log
將是完整的「改變」的文字,即使我只取得了3頁中的哈希值發生變化!
好吧,我打電話「而不是執行console.log」,在同一時間將再次回調onHashChange
任何招克服它的功能?
謝謝:)
對我而言,它在Chromium 11.0.696.68中正常工作。 – pimvdb 2011-05-23 15:29:47
我發現我迷路了。但現在的問題,如何檢查是否通過'history.replaceState'更改網址:) – amrnt 2011-05-23 15:33:04