无聊,试了试html5,无意中发现个问题。下面的代码贴到chrome、safari下ok,放到firefox下就会有问题。只会打印出一个0,然后就进入加载中的转圈状态。网上简单搜了下还没找到满意的答案,发到这分享下~
html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div id="result"></div> </body> <script> var i = 0; function doit() { document.write(i++); document.write("<br />"); } setInterval("doit()", 1000) </script> </html>
文档加载完后在Firefox下调用 document.write
真是诡异:
1. 调用 document.write
会隐式调用 document.open
2. 调用 document.open
会清空所有注册过的 timer
3. 调用 document.open
但是不调用 document.close
就会一直菊花转
在文档加载完成之后,document 对象已经关闭了,你再调用 document.write 会隐式地打开文档(document.open)(不然你的字符串往哪里写?)。然后你可以往里边写数据,写完了你调用 document.close 火狐才知道你写好了,这个时候才不转了。
不知道这是不是标准行为,也不知道其它浏览器是怎么想的。反正火狐就是这么想的。