Sunday, December 17, 2006

firefox在处理setInterval()、clearInterval()上与IE不一样吗?

在常去的firefox中文论坛上又看到了小白发问了:window.clearInterval(obj)为何不能停止循环计时呢?

随手测试了一下,确实不行,IE就不用问了,肯定是行的.反复调试和查阅后,可以发现,firefox对如何kill loop似乎另有看法.

<script type="text/javascript">
var intervalId;
var count=0;
function setUpInterval(){
intervalId=setInterval("showalert()",1000);
}
function showalert(){
count++;
document.getElementById("dispCount").value=parseInt(count);
}

function tran(){
clearInterval(intervalId);
}
</script>
<input name="btn1" type="button" id="btn1" value="开始循环" onclick="setUpInterval()" />
<input name="btn2" type="button" id="btn2" value="结束循环" onclick="tran()" />

按下“开始循环”按钮,执行上面的代码,循环不会终止.为了寻求答案.去MDC查看gecko的DOM文档,发现clearInterval()并没有什么特殊的值得注意的地方(想来也是,不就一个最基础的方法么?).于是仔细查看自己的代码,发觉在触发js事件的代码周围有一个

so,谜底揭晓了,答案就是这么简单:因为在某些位置的代码不规范,导致Firefox无法正确执行其它代码;而IE由于容错性高而爱怎么来就怎么来.第二个结论是:微软真阴险.

No comments: