1.用户输入网址(假设请求的是个html文件,并且是第一次访问),浏览器向服务端发送请求,服务器返回html文件
2.浏览器开始渲染html文件,发现里面有个link引入的css文件
3.浏览器又发出css文件请求,服务器返回这个css文件
4.浏览器继续载入代码,且css文件拿到,可以开始渲染页面了
5.浏览器在代码里面发现有标签引入的图片,于是向服务器发送请求,但是浏览器继续渲染后面的代码,不会等图片下载完成
6.等服务器返回图片,由于图片占用了一定的位置,因此浏览器需要回过头来重新渲染这部分代码
7.浏览器发现了js代码,就立即执行它
8.js脚本执行了,它命令必须隐藏掉某个div,所以浏览器必须得重新运行这部分代码
9.终于运行完,浏览器渲染结束
10.如果用户点击了换肤,js让浏览器换一下link中的css路径
11.浏览器向服务器请求了新的css文件,重新渲染页面。。。
在文档的标签中包含js文件,就意味着js文件会被下载、解析和执行之后,才能呈现页面内容(浏览器遇到标签才开始呈现内容)。那些需要很多的js代码的页面,在浏览器显示页面时会出现明显的延迟,延迟期间浏览器页面会是一片空白。
延迟期间浏览器页面一片空白是发生了什么,除了出现空白还会出现什么结果
如果把js放在head里的话,会先解析,但是body还没有解析,如果head里的js代码需要传入一个参数(在body调用该方法时,才会传入参数),并且需要改参数进行一系列的操作,这个时候就会报错,因为该函数的参数没有定义(undefind)
因此定义一个全局对象,而这个对象与页面中的某个按钮(等等)有关时,我们必须将其放入body中。因为:如果放到head,页面加载head时,那个按钮还没被定义(也可以说还没被加载,加载的过程就是执行代码的过程,包括了定义),这样你得到的只可能是undefind。
**注意:带有src属性的之间再包含额外的js代码,如果包含了嵌入的代码,则只会下载并执行脚本文件,嵌入的代码会被忽略 **