Internet Explorer似乎是唯一不支持pushState来处理AJAX提交历史记录的主要浏览器。所以我到处都有:
$.bbq.pushState(hash);
在我的AJAX代码中,我必须添加另一行:
$.ajax(hash);
这当然会导致所有支持通过pushState()提交的非IE浏览器进行双重提交。
我可以做些什么来避免这些双重提交?
答案 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);
}
}