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

$.bbq.pushState(hash);


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

$.ajax(hash);


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

我该如何避免这些重复提交?

最佳答案

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

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


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

var pushStateWrapper = function(hash) {

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

关于javascript - 如何在非IE浏览器中避免使用pushState和$ .ajax(hash)进行两次提交?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10030452/

10-11 11:45