2015-09-21 3 views
0

Я не могу для жизни меня фигурировать, почему функция успеха срабатывает дважды. Это необходимо сделать только один раз из-за перехода на следующую страницу. Эта проблема, похоже, влияет только на веб-браузеры safari/chrome. Firefox работает так, как предполагается. Он не срабатывает дважды, если я вынимаю строку, которая говорит removeClass.Успех Ajax запускается дважды в webkit

//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'); 
      } 
     } 
     }); 
    } 
+0

Как срабатывает 'replacePageContent'? –

ответ

0

Бит о «oTransitionEnd transitionEnd webkitTransitionEnd» вызывает, чтобы это произошло, судя по ним, как WebKit браузеров будет и поддержка transitionEnd и webkitTransitionEnd вызывая оба события стрелять одновременно. Я добавил небольшое обнаружение поддержки браузера, и он очистил все это.

Смежные вопросы