Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax成功在webkit中触发两次_Javascript_Jquery_Ajax_Webkit - Fatal编程技术网

Javascript Ajax成功在webkit中触发两次

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

我一辈子都不明白为什么成功函数会被触发两次。由于以下页面转换,只需触发一次。此问题仅在webkit浏览器safari/chrome中出现。Firefox按其应有的方式工作。如果我去掉上面写着removeClass的那条线,它不会开火两次

//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