请教一下各位关于document.readyState的问题。
下面是我的代码,当我第一次在vs中点击运行的时候 显示的是 interactive h1 interactive
interactive complete
在此基础上,我又做了 两种 操作 ,一种是按F5刷新 ,显示的是 loading h1 loading
loading complete
如果我不是按F5刷新,而是点击地址栏,按回车,显示的是interactive h1 interactive
interactive complete 和在vs中点一次点击运行的结果是一样的,我想问问为什么会出现这种情况
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> alert(document.readyState) window.onload=function() {alert(document.readyState)} </script> </head> <body> <h1>Title</h1> <script> alert("h1") </script> <script> alert(document.readyState) </script> <h2>Title2</h2> <script> alert(document.readyState) </script> </body> </html>
我没用vs 直接放在文本文档用 chrome 浏览的的 一直是
loading h1 loading loading complete
按道理 loading h1 loading loading complete 这种提示是没有错误的, 在加载过程中 alert 函数运行的时候 页面还没有加载完成 故应是 loading
loading函数运行的时候,页面时可以加载完成的,interactive的意思是文档完成解析,我觉得interactive更合理一些。因为在执行js代码的时候,浏览器的解析器是暂停工作的,所以解析工作是肯定没完成的,但是文档的加载的工作有可能已经完成了
@Mr.He多多指教:
http://www.jb51.net/web/108712.html
你看下这篇文章,上面说js的下载过程是不能并行下载和解析(阻塞下载)的,也就是说,如果下载并解析的过程遇到js脚本,会停掉整个页面的下载和呈现,
JS的加载
不能并行下载和解析(阻塞下载)
当 引用了JS的时候,浏览器发送1个jsrequest就会一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代 码直接改变了DOM树结构,比如使用 document.write 或 appendChild,甚至是直接使用的location.href进行跳转,浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以 就会阻塞其他的下载和呈现.