<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一、為啥需要dom 在JS(javascript)還沒誕生的遠古時代,不需要對html文檔內容進行修改,瀏覽器直接對文檔內容單次解析并呈現,就不再關心html文檔了,因為它不可能發生變化,那時候是沒有DOM的。 JS出現后,JS可能會修改html文檔,而且瀏覽器需要實時反映這種修改。 所以,瀏覽器在解析html文檔之后,還要跟蹤html文檔的變化。設想,沒有DOM,JS應該直接修改文檔的字符串內容,這將是一個大災難。 1. 首先,在JS中處理龐大的html文本,必然繁瑣且錯漏百出,沒人愿意這么做。 2. 即使,在JS這方面,你真的很厲害,完全勝任了這個工作,瀏覽器表示它不干了,剛剛把一個大頁面解析好,發現JS修改了它,可是根本無法知道修改了哪里,只能重新解析**整個頁面**,即使這個修改只是添加了一個空格,頁面內容根本沒有發生變化,這種性能的浪費不言而喻。 3. 再退一步,前面一切安好,在用戶看來,每次修改文檔,瀏覽器重新解析,頁面必然一段時間白屏,解析時間快可能是閃屏,這種體驗不如放棄修改頁面。 以上三個理由告訴我們,需要一種便捷、高效、可跟蹤的文檔修改方式,這些就是DOM做的事; 1. 在瀏覽器方面,瀏覽器首次解析文檔時,把文檔中的標簽(文本等)解析成一個個節點,父元素與子元素(或文本)用線連接,整個文檔最終形成一個稱為**DOM樹**的樹形結構。瀏覽器再根據DOM樹去呈現頁面。瀏覽器會跟蹤DOM樹的變化,一旦DOM樹變化,頁面也會做出相應變化。 2. 巧妙的是,DOM樹在JS環境中也是存在的(JS執行引擎是瀏覽器的一部分),所以,在JS中,原本對文檔的修改現在只需要修改DOM樹和其中的節點就好了。DOM節點對象是普通的JS對象,有易于操作的方法和屬性,這樣,在JS操縱文檔就好像操作對象一樣方便快捷。而且,瀏覽器會知道你修改了哪個節點,這樣,只需要重新渲染被修改影響的局部頁面就好了(即發生**回流**或**重繪**)。 后來,DOM組件發展成為一套不依托于瀏覽器和JS的獨立規范,提供了一套完整的訪問和修改文檔的接口,這些API在瀏覽器中被廣泛使用,不過,也支持python等其他。DOM標準由W3C維護,目前版本**DOM 4**。 ## 二、結論 DOM這個名詞應該有兩層含義,第一個是根據文檔建模出來的一個樹形模型,即是DOM樹,這是站在瀏覽器方面的看法;從編程語言來看,它提供了一套操縱文檔的API;
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看