1

Internet Explorer 似乎是唯一不支持 pushState 来处理 AJAX 提交历史的主流浏览器。所以我到处都有:

$.bbq.pushState(hash);

在我的 AJAX 代码中,我必须添加另一行:

$.ajax(hash);

这当然会在所有支持通过 pushState() 提交的非 IE 浏览器中导致双重提交。

我能做些什么来避免这些重复提交?

4

1 回答 1

2

仅当本机不支持时才调用$.ajax(hash);条件语句history.pushState

if (!history.pushState) {
   $.ajax(hash);
}

我还建议使用独特的包装函数重构您的代码,该函数接受哈希作为具有必要逻辑的参数,例如

var pushStateWrapper = function(hash) {

    if (!history.pushState) {
       $.ajax(hash);
    }
    else {
       $.bbq.pushState(hash);
    }
}
于 2012-04-05T14:25:32.613 回答