我在Firefox中的hashchange事件中遇到了问题。我们正在使用Ben Alman提供的JQuery哈希更改插件。代码如下。
$(window).hashchange(function (e) {
alert("Hello");
//we want to perform a post in here.
});
var temp = "#123";
if (temp !== "") {
if (window.location.hash == temp) {
$(window).hashchange();
}
else{
window.location.hash = temp;
}
}
else {
window.location.hash = "#Home/Home";
};
现在这在IE9和Chrome中工作正常,但是在Firefox中,我看到了警报,但是一旦我单击"确定",页面就会刷新,再次显示警报,并无限继续。Firefox 是否使用了我不知道的某种奇怪的行为?还是只是隐藏着更深层次的其他问题?
在某些浏览器中,window.location.hash
包含#
,而在某些浏览器中则不包含,因此最好在比较代码中的哈希值时忽略它。
试试这个。
$(window).hashchange(function (e) {
alert("Hello");
//we want to perform a post in here.
});
//Remove hash from here which will be compared with window.location.hash
var temp = "123";
if (temp !== "") {
//Replace # by empty nothing
if (window.location.hash.replace('#', '') == temp) {
$(window).hashchange();
}
else{
window.location.hash = '#' + temp;//Now add the hash here
}
}
else {
window.location.hash = "#Home/Home";
};
我们将问题定位为 Microsoft Ajax 中发生.js并找到了以下解决方案:火狐 6 无限页面刷新与页面与哈希标签