2014-09-16 2 views
1

Internet Explorer 11, похоже, успешно завершил мой вызов ajax. Он запускает код под условием success вплоть до последней строки в этом блоке, обновляет структуру HTML DOM, но затем замораживает после этого. Ошибка, которую я получаю в IE: «не отвечает из-за долгого сценария».Internet Explorer 11 выполняет условие успеха ajax, но затем замораживает

Мой код работает в Chrome, Firefox и Safari!

Вот как я вызвать функцию loadContentviaAjax, когда пользователь нажимает на ссылку постраничной:

$(document).on('click', '.pagination-top a', function() { 
    //CODE  
    loadContentviaAjax($(this).attr('href'), rawNewURL); 
    console.log('20'); 
    return false; 
}); 

Вот часть кодоблок в companysearch.js это касается:

function loadContentviaAjax(furl, rawNewURL) { 
    var webserviceURL = rawNewURL; 
    $.ajax({ 
     type: "GET", 
     url: webserviceURL, 
     data: "", 
     cache: false, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     error: function() { 
      $("#loadstatus").html($("#whoops").attr('data-message')).addClass('box_error'); 
     }, 
     success: function (data) { 
      console.log('0'); 

      //MORE OF MY CODE 

      console.log('18'); //<-- this line is still logged 
     } 
    });     
return false 
} 

Я попробовал: - закомментировать весь код в блоке success моего вызова AJAX - проверенные контрольные точки настроек в IE Средства разработки

, но я не могу сузить его до линии, которая вызывает эту проблему.

Линия

console.log('20'); 

также ударил, так что IE зависает после этого, но кроме loadContentviaAjax я не могу сузить, что является причиной замораживания .... пожалуйста, помогите!

+3

Это '19' должно быть зарегистрировано до' 0' и '10' – epascarello

+0

@epascarello: ах, конечно, вы правы :) Однако теперь я перешел в код, но все же мой скрипт замораживает IE сразу после завершения блока 'success'. Есть идеи? – Flo

+2

Если вы закомментируете код в блоке, он замерзнет? Огоняет ли он любые другие асинхронные процессы? Что вызвало вызов Ajax для начала? – epascarello

ответ

2

Хорошо! Я нашел фрагмент кода, вызывающий зависание в IE11. Я не совсем уверен, как вы это исправите, но я решил, что вы хотите знать.

Настройка отладчика js перед тем, как щелкнуть ссылку, а затем приостановить выполнение, показывает, что javascript будет тратить все свое время на http://pagead2.googlesyndication.com/pagead/osd.js. Поэтому ваш код имеет мало общего с этим.

Прохождение указывает, что код Google каким-то образом застревает в бесконечном цикле, перепрыгивая с функции a на b в c, чтобы снова функционировать. Он проводит большую часть времени в блоке catch для вызова getBoundingClientRect на iframe, у которого нет родителя (выбрасывает Unspecified Error).

Когда я держу http://pagead2.googlesyndication.com/pagead/osd.js от загрузки с помощью Fiddler, ваша навигация работает нормально.

Мне жаль, что я не могу просто сказать вам «изменить то или это, и он будет работать», но я не могу его найти - минимальный код Google трудно отлаживать. Возможно ли, что ваш код как-то покинул контейнер объявлений Google?

+0

Я хотел бы добавить к вашему ответу. Если возможно, используйте закрытие и локально назначайте переменные, возможно, что-то в вашем коде конфликтует в глобальном пространстве имен, вызывая поведение, упомянутое выше. .. просто мысль. – Tony

+0

Хорошо, спасибо, я посмотрю на это. Просто вопрос, поскольку я никогда не использую IE для отладки, не могли бы вы опубликовать шаги, которые вы предприняли для настройки js-отладчика? Так какие кодеки вы смотрели и т. Д.? Спасибо, и я отправлю обратно как можно скорее :) – Flo

+0

Aaaah. Волшебство IE. Шаги: - 1) Открыть IE - 2) Нажмите F12 (Меню - Инструменты - инструменты разработчика F12 тоже работают) - 3) Нажмите маленькую ошибку, выглядящую рис. Слева. Значок папки открывает список скриптов. Просто нажмите кнопку паузы после нажатия ссылки, чтобы узнать, что происходит. –

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

  • Нет связанных вопросов^_^