2012-10-31 51 views
1

我有一个单选按钮和复选框的列表,我想监视它们的事件以获取它们的值
一旦他们被点击我想运行一些逻辑值
现在我看到的是,它减慢渲染时间为IE8/IE9的实际变化
现在发生的事情是,我看到的结果视图等待它看起来怪异 其他所有浏览器微风通过它
但IE没那么多IE停止工作,而JavaScript正在运行一些操作

这里是一个示例代码

<html> 
<body> 
    <input type="radio" name="rad" value="1" id="t" /> 
</body> 

<script type="text/javascript">  
    function addEventHandler(elem,eventType,handler) { 
     if (elem.addEventListener){ 
      elem.addEventListener (eventType,handler,false); 
     }else if (elem.attachEvent){ 
      elem.attachEvent ('on'+eventType,handler); 
     } 
    } 

     var el = document.getElementById("t"); 

    addEventHandler(document.getElementById("t") , 'click' , function(){ 
     for(var i=0;i<30000000;i++);// the for loop is only to show the blocking behavior that OP is experiencing 
     alert("handled") 
    }); 
</script> 
</html> 

我如何可以防止停止并等待对JavaScript,直到完成了其操作,即有何看法?

+4

由于没有多少3000万循环迭代,它可能会很慢。 – jbabey

+0

是的:for(var i = 0; i <30000000; i ++);'是一个错误。 – Pointy

+0

以及为什么它在其他浏览器中工作得很好? –

回答

5

“我该如何防止IE浏览器停止并等待JavaScript,直到完成它的操作?”

您不能阻止IE等待JavaScript。通过等待,它的行为是正确的。

你可以做的最好的事情是改进你的代码,以便它不需要很长的时间来执行,或者将它分解成异步执行的更小的块。

+0

以及为什么它在其他浏览器如firefox和google chroome上工作得很好? –

+1

@AymanJitan:他们更快。如果没有看到您的代码,无法分辨更多。不同的浏览器有不同的优化。 –

+3

简单的说@ user1689607就没错。 IE浏览器是一款古老的浏览器,我怀疑Firefox是否会赶上Firefox的速度,Chrome等人。不管MS投入了多少努力(这不是太多tbh)。 –