1

我在 Firefox 中遇到了 hashchange 事件的问题。我们使用的是 Ben Alman 提供的 JQuery hashchange 插件。代码如下。

$(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 使用了某种我不知道的奇怪行为吗?还是只是有一些其他隐藏得更深的问题?

4

2 回答 2

0

在某些浏览器中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";
};
于 2012-02-19T22:17:42.097 回答
0

我们将问题定位在 MicrosoftAjax.js 中,并找到了以下解决方案: Firefox 6 Infinite Page Refresh With Page With Hash Tags

于 2012-02-20T19:34:02.990 回答