Javascript Ajax成功在webkit中触发两次
我一辈子都不明白为什么成功函数会被触发两次。由于以下页面转换,只需触发一次。此问题仅在webkit浏览器safari/chrome中出现。Firefox按其应有的方式工作。如果我去掉上面写着removeClass的那条线,它不会开火两次Javascript Ajax成功在webkit中触发两次,javascript,jquery,ajax,webkit,Javascript,Jquery,Ajax,Webkit,我一辈子都不明白为什么成功函数会被触发两次。由于以下页面转换,只需触发一次。此问题仅在webkit浏览器safari/chrome中出现。Firefox按其应有的方式工作。如果我去掉上面写着removeClass的那条线,它不会开火两次 //Page Loader Variables var ajaxPageRequest; var ajaxPageLoading = false; function getPage(url) { //Checks to see if transit
//Page Loader Variables
var ajaxPageRequest;
var ajaxPageLoading = false;
function getPage(url) {
//Checks to see if transition is complete before changing pages
$('.pageContent, .loadbar').addClass('init');
var newPage = $('#pageContent');
newPage.one('oTransitionEnd transitionEnd webkitTransitionEnd',
function(e) {
if (ajaxPageRequest) {
ajaxPageRequest.abort();
ajaxPageRequest = '';
}
replacePageContent(url);
}
);
}
function replacePageContent(ajaxPageAddress) {
if (ajaxPageRequest) {
ajaxPageRequest.abort();
ajaxPageRequest = '';
}
ajaxPageLoading = true;
ajaxPageRequest = $.ajax({url: ajaxPageAddress, async: true, cache: false})
.success(function(ajaxPageData) {
ajaxPageRequest = '';
if (ajaxPageLoading) {
ajaxPageLoading = false;
console.log('load complete' + ": " + ajaxPageAddress);
if (ajaxPageData) {
if (ajaxPageAddress != window.location) {
//add the new page to the window.history
window.history.pushState({
path: ajaxPageAddress
}, '', ajaxPageAddress);
}
$("#pageContent").html($(ajaxPageData).find("#pageContent > *")).removeClass('init');
$('#pageContent, .loadbar').removeClass('init');
}
}
});
}
关于“otTransitionEnd transitionEnd WebKittTransitionEnd”的一点导致了这种情况的发生,因为webkit浏览器都支持transitionEnd和WebKittTransitionEnd,从而导致两个事件同时触发。我添加了一点浏览器支持检测,它清除了所有问题。如何触发
replacePageContent
?