当我尝试打开文件对话框(输入类型=文件)时,我的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">
答案 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设置为您设置的确切时间。