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/