DOM文档通常加载的步骤:
1.解析HTML结构。
3.解析并执行脚本代码。
4.DOM树构建完成。
//DOMContentLoaded
5.加载图片等外部资源。
6.页面加载完毕。
//load顺序是这样,但很多时候几个步骤是同时发生的。
在这里梳理一下完整流程下的各种细节:
由于浏览器采用至上而下的方式解析,所以会先解析html,直到遇到外部样式和外部脚本。这时会阻塞浏览器的
解析,外部样式和外部脚本(在没有async、defer属性下)会并行加载,但是外部样式会阻塞外部脚本的执行。
即:html解析->外部样式、脚本加载->外部样式执行->外部脚本执行->html继续解析
情况一:如果是动态脚本(即内联脚本)则不受样式影响,在解析到它时会执行。
情况二:外部样式后续外部脚本含有async属性(IE下为defer),外部样式不会阻塞该脚本的加载与执行
(defer 会按照顺序在 DOMContentLoaded 前按照页面出现顺序依次执行,async 则是下载完立即执行)
在外部样式执行完毕后,css附着于DOM,创建了一个渲染树(渲染树是一些被渲染对象的集)。每个渲染对象都
包含了与之对应的计算过样式的DOM对象,对于每个渲染元素来说,位置都经过计算,所以这里被叫做“布局”。然
后将“布局”显示在浏览器窗口,称之为“绘制”。
接着脚本的执行完毕后,DOM树构建完成。这时,可以触发DOMContentLoaded事件。
DOMContentLoaded事件的触发条件是:在所有的DOM全部加载完毕并且JS加载执行后触发。
情况一:如果脚本是动态加载,则不会影响DOMContentLoaded时间的触发
浏览器会等css加载完成后再加载图片,因为不确定图片的样式会如何。
要点一:CSS样式表会阻塞图片的加载,如果想让图片尽快加载,就不要给图片使用样式,比如宽高采用标签属性即可。
要点二:脚本不会阻塞图片的加载
最后页面加载完成,页面load
js jquery *** 作dom 你在网页中查看源码 查看的 是没有 *** 作过的代码,也就是<div class="main">hello world</div>但是 你在浏览器窗口中 看到的页面 是<div class="main">hello china</div>
你的意思 就是 看页面js *** 作完事 生成的代码
有个办法 就是 查看源码 就是直接右键 查看源代码
如果要查看 js 生成的代码 就是debug firebug之类的查看就好了
------------------------------
忽然 看到 你下面的字 看到这份代码,还需要获取,拿来 *** 作.
就是 *** 作 js生成的代码 元素
简单的办法就是 settimeout 给个延迟 让前面的先生成了 再 *** 作
还有方法
<div id="one"></div>
$('#one').append("<p id='two'>test1</p>")
<div id="one"><p id='two'>test1</p></div>
$("body").on("click","#two",function(data){
alert(data)
})
用on 绑定
或者
delegate()方法绑定也可以
具体的可以百度下 jquery *** 作未来元素
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)