浏览器如何解析html

浏览器如何解析html,第1张

DOM文档通常加载的步骤:

1.解析HTML结构。

2.加载外部脚本样式表文件

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 *** 作未来元素

大概有个这样的form(表单)

<form name='login' action='login.php' method='post'>

    <input type='text' name='username' value='' />

    <input type='password' name='password' value='' />

</form>

<script>

    var name = document.login.username.value 

    /* document.login.username 指向 form name='login'

    下面的 input name=username 的值,就是你在input name='username' 

    写入的值

    */

    var pwd=document.login.password.value

    /*

     同上

    */

    document.login.submit()

    /*

     用户点击loginClick()时候触发document.login的submit方法

     submit用于表单提交,相当于下面这个表单的button的作用。

     就像你在百度知道提问的时候,写完问题要提交上去submit就是提交表单里的

     数据给服务器的。

     <form action='login.php' method='post'>

         <button type='submit'>条件数据</button>

     </form>

     

    */

</script>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6306113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-20
下一篇 2023-03-20

发表评论

登录后才能评论

评论列表(0条)

保存