Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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
IE在JavaScript运行某些操作时停止工作_Javascript_Html_Internet Explorer_Events - Fatal编程技术网

IE在JavaScript运行某些操作时停止工作

IE在JavaScript运行某些操作时停止工作,javascript,html,internet-explorer,events,Javascript,Html,Internet Explorer,Events,我有一个单选按钮和复选框列表,我想监视它们的事件以获取它们的值 单击后,我想对这些值运行一些逻辑 现在我看到的是,它减慢了IE8/IE9中实际更改的渲染时间 现在发生的是,我看到视图等待结果,它看起来很奇怪 所有其他浏览器都能轻松浏览 但是IE没有那么多 下面是一个示例代码 <html> <body> <input type="radio" name="rad" value="1" id="t" /> </body> <sc

我有一个单选按钮和复选框列表,我想监视它们的事件以获取它们的值
单击后,我想对这些值运行一些逻辑
现在我看到的是,它减慢了IE8/IE9中实际更改的渲染时间
现在发生的是,我看到视图等待结果,它看起来很奇怪 所有其他浏览器都能轻松浏览
但是IE没有那么多

下面是一个示例代码

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

函数addEventHandler(元素、事件类型、处理程序){
if(元素addEventListener){
elem.addEventListener(事件类型,处理程序,false);
}else if(附件要素){
elem.attachEvent('on'+事件类型,处理程序);
}
}
var el=document.getElementById(“t”);
addEventHandler(document.getElementById(“t”),“单击”,函数(){
对于(var i=0;i
“如何防止ie视图停止并等待JavaScript完成it操作?”

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

您所能做的最好的事情是改进代码,使其不会花费太长时间来执行,或者将其分解为异步执行的较小块

“如何防止ie视图停止并等待JavaScript完成it操作?”

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


你能做的最好的事情就是改进你的代码,这样执行起来就不会花那么长的时间,或者把代码分成更小的块异步执行。

由于你有3000万次毫无意义的循环迭代,代码可能会变慢。@jbabey他构建了一个Click-erciser!很可能其他浏览器的javascript引擎足够聪明,可以看到你的OOP是毫无意义的,并且忽略了它们。IE可能没有,因此不同。@AymanJitan在所有浏览器中,JavaScript执行都是同步的。浏览器等待,因为这是它应该做的。其他较新的浏览器只是比IE更好地优化JavaScript,所以它们花费的时间更少,但它们仍然在等待。正如其他所有浏览器一样ed,它在等待,因为它应该是这样的。Javascript是单线程的。因此,在当前代码完成并返回调用堆栈之前,它实际上无法继续运行。它可能会很慢,因为您进行了毫无意义的3000万次循环迭代。@jbabey他构建了一个Click-erciser!很可能其他浏览器的Javascript引擎足够聪明,可以看到至少,循环是没有意义的,并且忽略了它们。IE可能没有,因此区别就在于此。@AymanJitan在所有浏览器中,JavaScript执行都是同步的。浏览器等待,因为这是它应该做的。其他较新的浏览器只是比IE更好地优化JavaScript,所以它们花费的时间更少,但它们仍然在等待。其他所有浏览器都有already说,之所以等待是因为它应该是这样的。Javascript是单线程的。因此,在当前代码完成并返回调用堆栈之前,它实际上无法继续。为什么它在其他浏览器(如firefox和google Chrome)上工作得很好?@AymanJitan:它们更快。如果看不到您的代码,就说不出更多。不同的浏览器哈我有不同的优化。简单地说@user1689607是正确的。IE是一款古老的浏览器,我怀疑它是否会在速度上赶上Firefox、Chrome等。无论微软在它上投入了多少努力(这并不太重要)。为什么它在firefox和google Chrome等其他浏览器上运行得很好?@AymanJitan:它们更快。如果不看你的代码,就说不出更多。不同的浏览器有不同的优化。简单地说,@user1689607是对的。IE是一款古老的浏览器,我怀疑它是否会在速度上赶上firefox、Chrome等。不管怎样微软在这方面投入了很多精力(这并不多)。