如何在非IE浏览器中避免使用pushState和$ .ajax(hash)进行双重提交?

时间:2012-04-05 14:23:39

标签: javascript jquery ajax pushstate jquery-bbq

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

$.bbq.pushState(hash);

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

$.ajax(hash);

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

我可以做些什么来避免这些双重提交?

1 个答案:

答案 0 :(得分:2)

只有在本地支持$.ajax(hash);的情况下,才能在条件语句中调用history.pushState

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

我还建议使用一个独特的包装器函数来重构你的代码,该函数接受一个带有必要逻辑的hash作为参数,例如

var pushStateWrapper = function(hash) {

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