Internet Explorer 11执行ajax成功条件,但随后冻结

时间:2014-09-16 18:06:14

标签: javascript ajax internet-explorer-11 freeze

Internet Explorer 11似乎成功执行了我的ajax调用。它运行success条件下的代码一直到该块的最后一行,更新HTML DOM结构,但之后冻结。 我在IE中遇到的错误是:"由于长时间运行的脚本而没有响应#34;。

我的代码适用于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
}

我试过了: - 注释掉我的AJAX调用的success块中的所有代码 - 尝试在IE Developer Tools中设置断点

但是我无法将其缩小到导致此问题的行。

该行

console.log('20');

也被击中,所以IE之后冻结,但除了loadContentviaAjax我无法缩小导致冻结的原因....请帮助!

1 个答案:

答案 0 :(得分:2)

好的!我找到了导致IE11挂起的代码片段。我不太确定你是如何解决它的,但我想你想知道。

在单击链接之前设置js调试器,然后暂停执行显示javascript将花费所有时间在http://pagead2.googlesyndication.com/pagead/osd.js。所以你的代码与它没什么关系。

单步执行表示Google的代码以某种方式陷入无限循环,从功能a跳到b再到c再次运行。它大部分时间都在catch块中用于在没有父项的iframe上调用getBoundingClientRect(抛出Unspecified Error)。

当我使用Fiddler下载http://pagead2.googlesyndication.com/pagead/osd.js时,您的导航工作正常。

我希望我能告诉你&#34;改变这个或那个它会起作用&#34;但我无法找到它 - 缩小的谷歌代码很难调试。您的代码是否有可能以某种方式将谷歌广告容器孤立?