当文件对话框打开时,JS代码停止执行

时间:2012-02-08 20:48:33

标签: javascript html input

当我尝试打开文件对话框(输入类型=文件)时,我的JS代码在IE中停止执行。你能解释一下为什么会这样吗?我该如何解决它?

JS:

    function Count() { 
    num++;
    document.timerform.clock.value = num;
    down = setTimeout("Count()", 1000);
    }
    function timeIt() {
    num=0;
    Count();
    }

HTML:

    <BODY OnLoad="timeIt()">
    <center>   
    <form name="timerform">
    <input type="text" name="clock" size="7" value="1:00"><p>
    <input type="file" name="datafile" size="40">
    </form>
    </center>

版本vith iframe:

    <BODY OnLoad="timeIt()">
    <center>
    <form name="timerform">
    <input type="text" name="clock" size="7" value="1:00"><p>
    <iframe src="blank.html" height="200" width="500">My frame.</iframe>
    </form>
    </center>

blank.html:

    <input type="file" name="datafile" size="40">

2 个答案:

答案 0 :(得分:1)

这就是浏览器的本质。你无能为力。 (除了将文件对话框放在Iframe中)

答案 1 :(得分:0)

Javascript是单线程的。如果你想要第二个计数器使用setTimeout而不是因为javascript而离开我建议你使用Date对象。执行以下操作:

var startTime = 0;
function Count() { 
    document.timerform.clock.value = Math.round((new Date().getTime() - startTime)/1000);
    down = setTimeout(Count, 1000);
}
function timeIt() {
    startTime = new Date().getTime();
    Count();
}

然后即使你有一个控制javascript线程的事件,一旦计数回升,你也不会计算。您仍然希望避免这些情况,但不要指望将setTimeout设置为您设置的确切时间。