Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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
为什么jQueryAjax在IE7上速度如此之慢?_Jquery_Ajax_Internet Explorer 7 - Fatal编程技术网

为什么jQueryAjax在IE7上速度如此之慢?

为什么jQueryAjax在IE7上速度如此之慢?,jquery,ajax,internet-explorer-7,Jquery,Ajax,Internet Explorer 7,我对IE7上的jQueryAjax调用有问题。这段简单的代码在FF和Opera上运行良好。但在IE7上需要3-5秒这比FF慢20倍!加载内容是纯HTML和内联JavaScript代码。没有JS渲染。我甚至还打开了内联JavaScript代码。但是仍然很慢 $('#block').load('some url'); 如何克服这个问题?任何帮助都将不胜感激 如何克服这个问题?任何帮助都将不胜感激 在页面加载时检测IE7,并提供一个独立的建议,让不喜欢缓慢加载的用户升级。您真的无能为力。IE的jav

我对IE7上的jQueryAjax调用有问题。这段简单的代码在FF和Opera上运行良好。但在IE7上需要3-5秒这比FF慢20倍!加载内容是纯HTML和内联JavaScript代码。没有JS渲染。我甚至还打开了内联JavaScript代码。但是仍然很慢

$('#block').load('some url');
如何克服这个问题?任何帮助都将不胜感激

如何克服这个问题?任何帮助都将不胜感激


在页面加载时检测IE7,并提供一个独立的建议,让不喜欢缓慢加载的用户升级。

您真的无能为力。IE的javascript引擎比其他任何引擎都慢(事实上,它糟透了)。你可以试试IE8。这是更好的。。。稍微…

我也有同样的问题,jscript ie7引擎运行缓慢。我为人类添加了一个状态弹出窗口。我在JS分块运行时更新状态窗口。伪代码:

  • 使用favorit js库创建状态容器。我更喜欢你。查看他们的容器api
  • 进行一些数据加载。-你首先需要把它分成几块
  • 更新状态弹出窗口。(增加已完成的加载百分比,增加一个条形指示器等)注意,由于JS线程仍在运行,因此此时屏幕可能不会改变
  • 下一步,打电话
  • var t=设置超时(“下一步(2)”,0; //其中arg为2表示执行第二步 //这将让与浏览器,然后更新显示。 //如果要在函数中保持“this”的值,请执行以下操作 //差不多 var t=setTimeout(“下一步调用(MyContext,2)”,0; //使用call设置函数的上下文。 底线是用户将在屏幕上看到一些变化。请注意,相对而言,在超时为0的情况下让步需要相当长的时间。因此,我的代码测试浏览器,如果不是IE,那么每个块都会做更多的工作

    向用户提供不断变化的反馈非常重要。否则,他们认为这比实际需要的时间更长

    嗯,


    Larry

    我必须查看实际的代码,但面对类似的问题,我不得不去掉jQuery.load()。相反,我使用带有“html”数据类型的jQuery.get(),并编写了自己的回调,通过.innerHTML注入数据。这样做,我还碰到了另一个bug(它是一个标签,IE不允许在上面使用.innerHTML),所以我写了一个难看的解决方法

    生成的代码如下所示:

    // Fetch data (GET method allows me to use browser cache)
    $.get(url, get, function(htmlValues, txtStatus){
       that.populateSelects(htmlValues, that.selectContainers);
    }, "html");
    
    
    // Create <select>
    var select = $('<span><select disabled="disabled"></select></span>');
    $("<option>").attr("value", "").text("Loading...").appendTo(select.find("select"));
    
    
    // Populate <select>
    that.populateSelects = function(values, selectContainers){
       var span, select, tags;
    
       for(var i=0, len=selectContainers.length; i<len; i++){
          span = selectContainers[i];
    
          if($.browser.msie){
             tags = span.innerHTML.match(/^(<select[^>]+>).*(<\/select>)$/i);
             span.innerHTML = tags[1] + values + tags[2];
             select = span.firstChild;
          }else{
             select = span.firstChild;
             select.innerHTML = values;
          }
          $(select).removeAttr("disabled");
       }
    } 
    
    //获取数据(GET方法允许我使用浏览器缓存)
    $.get(url、get、函数(HtmlValue、txtStatus){
    that.populateSelects(htmlValue,that.selectContainers);
    },“html”);
    //创造
    var select=$('');
    $(“”).attr(“值”),text(“加载…”)。appendTo(选择。查找(“选择”);
    //填充
    that.populateSelects=函数(值,选择容器){
    变量范围、选择、标记;
    for(var i=0,len=selectContainers.length;i)。*()$/i);
    span.innerHTML=标记[1]+值+标记[2];
    选择=span.firstChild;
    }否则{
    选择=span.firstChild;
    select.innerHTML=值;
    }
    $(选择).removeAttr(“禁用”);
    }
    } 
    
    您正在加载多少内容?IE在某些方面通常会稍微慢一点,如果有大量内容,则会慢很多。11KB。这对IE7来说太多了吗?FF Opera Chrome加载速度非常快。事实上,IE8的速度要快得多,而且在某些方面,比FF3快得多。StackOverflow就是一个很好的例子。我有大约21个“感兴趣”标签,IE7的渲染速度非常慢。。。比这好得多。当我升级到IE8时,IE8现在在stackoverflow上尖叫。现在Firefox的速度要慢一些。所以,我又回到了IE上现在在Safari 4或Chrome上试用。不过,你是对的。最近FireFox让我很失望(除了因为Firebug而开发的时候…没有Firebug我们会怎么做??)。IE8增加了开发者工具栏,这比什么都没有要好。。。但是,它仍然不是萤火虫。抱歉,OT的咆哮。开发者工具栏从IE6I开始就一直存在,我自己也曾多次遇到过这个问题,并且在您的回答中实现了相同的“伪”线程技术。我常常不得不建立一个排队机制。jQuery1.3实现了一个队列,它可以使这项工作更加容易,并提供极好的建议。在执行异步调用或可能需要一秒钟以上(即使只是“加载”动画)的非常密集的算法时,应该始终存在某种反馈。这适用于任何浏览器/实现。为此干杯,我刚刚用$.get+innerHTML替换了$.load,节省了几秒钟的应用程序加载时间。
    // Fetch data (GET method allows me to use browser cache)
    $.get(url, get, function(htmlValues, txtStatus){
       that.populateSelects(htmlValues, that.selectContainers);
    }, "html");
    
    
    // Create <select>
    var select = $('<span><select disabled="disabled"></select></span>');
    $("<option>").attr("value", "").text("Loading...").appendTo(select.find("select"));
    
    
    // Populate <select>
    that.populateSelects = function(values, selectContainers){
       var span, select, tags;
    
       for(var i=0, len=selectContainers.length; i<len; i++){
          span = selectContainers[i];
    
          if($.browser.msie){
             tags = span.innerHTML.match(/^(<select[^>]+>).*(<\/select>)$/i);
             span.innerHTML = tags[1] + values + tags[2];
             select = span.firstChild;
          }else{
             select = span.firstChild;
             select.innerHTML = values;
          }
          $(select).removeAttr("disabled");
       }
    }