国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

加快DHTML的一組技巧

加快DHTML的一組技巧

更新時間:2022-05-14 文章作者:未知 信息來源:網絡 閱讀次數:

Mark Davis
Microsoft Corporation
摘要:本文說明了某些 DHTML 功能對性能的重大影響,并提供了一些提高 DHTML 頁面性能的技巧。
目錄
簡介
成批處理 DHTML 更改
使用 innerText
使用 DOM 添加單個元素
擴展 SELECT 元素中的選項
用 DOM 更新表
編寫一次,使用多次
請勿過多使用動態屬性
數據綁定很有效
不要在 document 對象中設置 expando 屬性
避免切換類和樣式規則
查找父項之前,先折疊文本范圍
其他資料

簡介
動態 HTML (DHTML) 在 Microsoft® Internet Explorer 4.0 中的引入,使 Web 作者和開發人員可以使用新的編程模型。此后,Web 作者充分利用了這個強大的特性來提供動態內容、樣式和定位,使 Web 用戶得以體驗豐富的交互式功能。DHTML 的靈活性使得通常會有多種方式可以實現您的構思。理解 Internet Explorer 的 HTML 分析和顯示組件如何處理請求,可幫助您確定完成工作的最佳方法。本文介紹了某些 DHTML 功能對性能的重大影響,并提供了一些提高頁面性能的技巧。

成批處理 DHTML 更改

在 DHTML Web 頁面上,提高性能的最有效方法是改進對頁面上 HTML 內容的更改。有多種方法可以更新 Web 頁面,了解這一點非常重要。從客戶的反饋來看,Web 作者可以應用 HTML 文本塊,也可以通過使用 [url href=http://msdn.microsoft.com/workshop/author/om/doc_object.asp]DHTML 對象模型[/url](英文)或 [url href=http://msdn.microsoft.com/workshop/author/dom/domoverview.asp]W3C 文檔對象模型 (DOM)[/url](英文)來訪問個別 HTML 元素。無論何時更改 HTML 內容,Internet Explorer 的 HTML 分析和顯示組件都必須重新組織該頁面的內部表現形式,重新計算文檔布局和文檔流,并顯示這些變化。雖然實際性能由 Web 頁面的內容和您所作的更改決定,但是這些操作代價都比較大。如果您應用 HTML 文本塊,而不是個別訪問元素,則必須調用 HTML 分析器,這將導致額外的性能開銷。接受 HTML 文本的方法和屬性包括 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/insertadjacenthtml.asp]insertAdjacentHTML[/url](英文)和 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/pastehtml.asp]pasteHTML[/url](英文)方法,以及 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/innerhtml.asp]innerHTML[/url](英文)和 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/outerhtml.asp]outerHTML[/url](英文)屬性。 技巧 1:在一個腳本函數中對 HTML 內容進行更改。如果您的設計使用了多個事件處理程序(例如響應鼠標移動),則應集中進行更改。


HTML 分析和顯示組件的另一項重要事實是:一旦腳本返回控制(例如,當腳本事件處理函數退出時,或者當調用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/settimeout.asp]setTimeout[/url](英文)等方法時),該組件將重新計算布局并顯示 Web 頁面。現在,您已經了解 Internet Explorer 如何處理變化,下面將開始提高 Web 頁面的性能。 技巧 2:建立一個 HTML 字符串并對文檔進行一次更改,而不是進行多次更新。如果 HTML 內容不是必要的,可考慮使用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/innertext.asp]innerText[/url](英文)屬性。


在以下示例中,速度較慢的方法每次設置 innerHTML 屬性時都調用 HTML 分析器。要提高性能,可以先建立一個字符串,然后將其分配給 innerHTML 屬性。
[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip2.asp]請顯示[/url]
慢:
divUpdate.innerHTML = ""; for ( var i=0; i<100; i++ ) {  divUpdate.innerHTML += "<SPAN>這是一個較慢的方法!</SPAN>"; }

快:
var str=""; for ( var i=0; i<100; i++ ) {  str += "<SPAN>因為使用字符串,此方法較快!</SPAN>"; } divUpdate.innerHTML = str;

有關詳細信息,請參見[url href=http://msdn.microsoft.com/workshop/author/dyncontent/content.asp]動態內容[/url](英文)。
使用 innerText

DHTML 對象模型通過 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/innertext.asp]innerText[/url](英文)屬性訪問 HTML 元素的文本內容,而 W3C DOM 則提供一個獨立的子文本節點。直接通過 innerText 屬性更新元素的內容,比調用 DOM [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createtextnode.asp]createTextNode[/url](英文)方法更快。 技巧 3:使用 innerText 屬性更新文本內容。


以下示例顯示了如何使用 innerText 屬性提高性能。
[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip3.asp]請顯示[/url]
慢:
var node; for (var i=0; i<100; i++) {  node = document.createElement( "SPAN" );  node.appendChild(  document.createTextNode( "使用 createTextNode() ") );  divUpdate.appendChild( node ); }

快:
var node; for (var i=0; i<100; i++) {  node = document.createElement( "SPAN" );  node.innerText = "使用 innerText 屬性";  divUpdate.appendChild( node ); }
使用 DOM 添加單個元素

如前所述,應用 HTML 文本的訪問方法將導致調用 HTML 分析器,從而會降低性能。因此,使用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createelement.asp]createElement[/url](英文)和 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/insertadjacentelement.asp]insertAdjacentElement[/url](英文)方法添加元素比調用一次 insertAdjacentHTML 方法快。 技巧 4:調用 createElement 和 insertAdjacentElement 方法比調用 insertAdjacentHTML 方法快。


成批處理 DHTML 更新并調用一次 insertAdjacentHTML 方法可以提高性能,但是有時直接通過 DOM 創建元素效率更高。在下面的方案中,您可以嘗試一下這兩種方法并確定哪一種更快。
[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip4.asp]請顯示[/url]
慢:
for (var i=0; i<100; i++)  {  divUpdate.insertAdjacentHTML( "beforeEnd", "<SPAN> 使用 insertAdjacentHTML() </SPAN>" ); }

快:
var node; for (var i=0; i<100; i++) {  node = document.createElement( "SPAN" );  node.innerText = " 使用 insertAdjacentElement() ";  divUpdate.insertAdjacentElement( "beforeEnd", node ); }
擴展 SELECT 元素中的選項

對于上一條使用 HTML 文本方法的規則來說,將大量 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/option.asp]OPTION[/url](英文)元素添加到 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/select.asp]SELECT[/url](英文)中的情況是一種例外。這時候,使用 innerHTML 屬性比調用 createElement 方法訪問選項集合效率更高。 技巧 5:使用 innerHTML 將大量選項添加到 SELECT 元素中。


使用字符串連接操作來建立 SELECT 元素的 HTML 文本,然后使用此技巧設置 innerHTML 屬性。對于數量特別大的選項,字符串連接操作也會影響性能。在此情況下,請建立一個數組并調用 Microsoft JScript&reg; [url href=http://msdn.microsoft.com/scripting/jscript/doc/jsmthjoin.htm]join[/url](英文)方法來執行 OPTION 元素 HTML 文本的最終連接。
[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip5.asp]請顯示[/url]
慢:
var opt; divUpdate.innerHTML = "<SELECT ID='selUpdate'></SELECT>"; for (var i=0; i<1000; i++) {  opt = document.createElement( "OPTION" );  selUpdate.options.add( opt );  opt.innerText = "第 " + i + " 項"; }

快:
var str="<SELECT ID='selUpdate'>"; for (var i=0; i<1000; i++) {  str += "<OPTION>第 " + i + " 項</OPTION>"; } str += "</SELECT>"; divUpdate.innerHTML = str;

更快:
var arr = new Array(1000); for (var i=0; i<1000; i++) {  arr = "<OPTION>第 " + i + " 項</OPTION>"; } divUpdate.innerHTML = "<SELECT ID='selUpdate'>" + arr.join() + "</SELECT>";
用 DOM 更新表

使用 DOM 方法插入表的行和單元格比使用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/insertrow.asp]insertRow[/url](英文)和 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/insertcell.asp]insertCell[/url](英文)方法(DHTML table 對象模型的一部分)效率更高。尤其在創建大的表時,效率上的差別更加明顯。 技巧 6:使用 DOM 方法建立大表。


[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip6.asp]請顯示[/url]
慢:
var row; var cell; for (var i=0; i<100; i++) {  row = tblUpdate.insertRow();  for (var j=0; j<10; j++)  {    cell = row.insertCell();    cell.innerText = "第 " + i + " 行,第 " + j + " 單元格";  } }

快:
var row; var cell; var tbody = tblUpdate.childNodes[0]; tblUpdate.appendChild( tbody ); for (var i=0; i<100; i++) {  row = document.createElement( "TR" );  tbody.appendChild( row );  for (var j=0; j<10; j++)  {    cell = document.createElement( "TD" );    row.appendChild( cell );    cell.innerText = "第 " + i + " 行,第 " + j + " 單元格";  } }
編寫一次,使用多次

如果您的 Web 站點使用腳本來執行一些常用操作,可以考慮將這些功能放到獨立的文件中,以便可以由多個 Web 頁面重復使用。這樣做,不僅可以改善代碼的維護性,而且使該腳本文件保留在瀏覽器的緩存中,從而只需要在用戶訪問站點時向本地下載一次。將常用的樣式規則放在獨立的文件中也可以得到同樣的好處。 技巧 7:通過將常用代碼放到行為或獨立文件中來重用腳本。


要更好地利用腳本重用功能,請將常用的腳本操作放到 DHTML 附加代碼或元素[url href=http://msdn.microsoft.com/workshop/author/behaviors/overview.asp]行為[/url](英文)中。行為提供了一個有效的方法,用于重用腳本和建立從 HTML 訪問的組件,并使您可用自己的對象、方法、屬性和事件來擴展 DHTML 對象模型。對于未使用 [url href=http://msdn.microsoft.com/workshop/author/behaviors/overview/viewlink_ovw.asp]viewlink[/url](英文)功能的行為,可以考慮使用 Internet Explorer 5.5 中的 [url href=http://msdn.microsoft.com/workshop/author/behaviors/overview/elementb_ovw.asp#lightweighthtcs]lightweight[/url](英文)行為特性進行更有效的代碼封裝。另外,如果您的腳本代碼在一個 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/script.asp]SCRIPT[/url](英文)塊中,會獲得更高的性能。
請勿過多使用動態屬性

[url href=http://msdn.microsoft.com/workshop/author/dhtml/overview/recalc.asp]動態屬性[/url](英文)為 Web 作者提供了一種將表達式用作屬性值的方法。表達式在運行時計算,其結果值將應用于屬性。這是一個強大的特性。此特性可用于減少頁面上的腳本數量,但是因為必須定時重算表達式,而且該表達式經常與其他屬性值相關,所以它會對性能帶來消極的影響。這種情況對定位屬性尤其明顯。 技巧 8:限制使用動態屬性。


數據綁定很有效

[url href=http://msdn.microsoft.com/workshop/author/databind/data_binding.asp]數據綁定[/url](英文)是一個強大的功能,它使您可以將數據庫查詢的結果或 [url href=http://msdn.microsoft.com/xml/tutorial/author_island.asp]XML 數據島[/url](英文)的內容,綁定至 Web 頁面上的 HTML 元素。您無需返回服務器提取數據,就可以提供數據排序和過濾功能,以及不同的數據視圖。設想一個 Web 頁面可以將公司的數據顯示為折線圖、條形圖或餅圖,還具有將數據按辦公室、產品或銷售階段排序的按鈕,而且所有這些功能只需要訪問一次服務器就能實現。 技巧 9:使用數據綁定來提供豐富的客戶端數據視圖。


有關數據綁定的詳細信息,請參見以下文章:
[url href=http://msdn.microsoft.com/workshop/author/databind/data_binding.asp]數據綁定概述[/url](英文)

[url href=http://msdn.microsoft.com/workshop/author/databind/dude1103.asp]綁定頁面數據[/url](英文)

[url href=http://msdn.microsoft.com/workshop/author/databind/dude010499.asp]傾斜的、平均的和事實上的數據綁定[/url](英文)
不要在 document 對象中設置 expando 屬性

[url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/expando.asp]expando[/url](英文)屬性可以添加至任何對象。此屬性非常有用,它可以存儲當前 Wed 頁面內的信息,并提供了另一種擴展 DHTML 對象模型的方法。例如,您可以給 DHTML 元素指定一個 [I]clicked 屬性,用此屬性提示用戶已經單擊了哪一個元素。在引發事件時,也可以使用 expando 屬性,向事件處理函數提供更多的上下文信息。無論您如何使用 expando 屬性,切記不要在 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_document.asp]document[/url](英文)對象上設置它們。如果您這樣做,則當您訪問該屬性時,文檔必須執行額外的重算操作。 技巧 10:在 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_window.asp]window[/url](英文)對象上設置 expando 屬性。


[url href=http://www.microsoft.com/china/msdn/msdnonline/features/articles/tip10.asp]請顯示[/url]
慢:
for (var i=0; i<1000; i++) {  var tmp;  window.document.myProperty = "第 " + i + " 項";  tmp = window.document.myProperty; }

快:
for (var i=0; i<1000; i++) {  var tmp;  window.myProperty = "第 " + i + " 項";  tmp = window.myProperty; }
避免切換類和樣式規則

切換類和樣式規則是一種代價非常高的操作,需要重新計算并調整整個文檔的布局。如果您的 Web 站點使用樣式表來提供內容的備用視圖,可以考慮直接修改要更改的元素的 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_style.asp]style[/url](英文)對象,而不是修改元素的 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/classname.asp]className[/url](英文)屬性或與類關聯的 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_stylesheet.asp]styleSheet[/url](英文)對象。 技巧 11:在更改內容的外觀時,直接修改 style 對象。


查找父項之前,先折疊文本范圍

[url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_textrange.asp]TextRange[/url](英文)對象表示用戶選定或從 HTML 元素中檢索的一個文本區域,例如 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/body.asp]BODY[/url](英文)。通過調用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/parentelement_1.asp]parentElement[/url](英文)方法,可以標識文本范圍的父項。對于復雜的文本范圍,在調用 parentElement 方法之前,先調用 [url href=http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/collapse.asp]collapse[/url](英文)方法效率會更高。 技巧 12:在訪問 parentElement 方法之前,先折疊文本范圍。


有關詳細信息,請參見 [url href=http://msdn.microsoft.com/workshop/author/dyncontent/textrange.asp]使用 TextRange 對象[/url](英文)。
其他資料

有關提高性能的其他技巧來源,請參見以下文章:
[url href=http://msdn.microsoft.com/workshop/author/perf/perftips.asp]建立高性能 HTML 頁面[/url](英文)

[url href=http://msdn.microsoft.com/workshop/author/dhtml/dude/dude100499.asp]提高性能的更多技巧[/url](英文)

[url href=http://msdn.microsoft.com/workshop/author/dhtml/dude/dude1201.asp]頻繁的飛躍:提高 DHTML 頁面的性能[/url](英文)


Mark Davis 是 Internet Explorer SDK 文檔組的軟件設計工程師。他不懈地探索 Internet Explorer 的最新技術,不過有時也會到西北部去放松一下。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        夜夜精品浪潮av一区二区三区| 欧美一级夜夜爽| 99久久精品免费看国产 | 成人午夜伦理影院| 国产精品午夜在线观看| 国产91精品一区二区麻豆亚洲| 国产亚洲人成网站| 国产高清久久久| 亚洲国产精品黑人久久久| 不卡一区二区三区四区| 一区二区三区在线观看网站| 欧美日韩一卡二卡| 久久99深爱久久99精品| 国产欧美一区二区精品性色 | 图片区小说区区亚洲影院| 欧美放荡的少妇| 国产凹凸在线观看一区二区| 中文字幕在线一区| 日韩一区二区三区电影在线观看 | www.激情成人| 婷婷中文字幕综合| 国产日韩欧美精品电影三级在线| 色综合中文字幕| 精品一区二区三区在线视频| 亚洲柠檬福利资源导航| 欧美一区二区黄| 91美女片黄在线观看| 视频一区视频二区在线观看| 国产女人18毛片水真多成人如厕 | 成人免费高清视频在线观看| 亚洲国产日韩精品| 欧美国产一区二区在线观看| 欧美精品亚洲一区二区在线播放| 国产黄色精品视频| 视频一区欧美精品| 亚洲色图色小说| 国产亚洲va综合人人澡精品| 欧美日韩三级一区| 99久久99久久综合| 丁香六月久久综合狠狠色| 午夜精品一区在线观看| 亚洲少妇中出一区| 久久久久久久久久久久电影| 日韩欧美国产三级电影视频| 色狠狠综合天天综合综合| 精彩视频一区二区三区| 午夜一区二区三区在线观看| 国产精品护士白丝一区av| 久久青草欧美一区二区三区| 911精品国产一区二区在线| 色香蕉成人二区免费| 成人自拍视频在线| 国产美女一区二区三区| 蜜桃视频在线观看一区| 日韩国产欧美在线观看| 午夜精品久久久久久久久久| 亚洲亚洲人成综合网络| 亚洲一级二级在线| 一区二区久久久| 亚洲精品成人精品456| 亚洲欧洲精品一区二区三区| 国产精品欧美久久久久一区二区| 久久久另类综合| 国产亚洲va综合人人澡精品 | 日韩精品电影在线| 日韩高清在线一区| 日韩影院免费视频| 日本aⅴ精品一区二区三区| 日韩精品一级二级| 免费成人结看片| 久久9热精品视频| 久久不见久久见免费视频7| 日韩精品色哟哟| 日本在线不卡一区| 久久99精品久久久| 狠狠网亚洲精品| 国产成人免费视频一区| 成人av电影免费在线播放| 成人免费电影视频| 波多野结衣欧美| 色综合夜色一区| 欧美日本不卡视频| 精品久久久久久亚洲综合网| 国产欧美精品区一区二区三区| 亚洲美女偷拍久久| 日本不卡123| 成人网在线免费视频| 色婷婷av久久久久久久| 91精品欧美福利在线观看| 欧美国产激情一区二区三区蜜月| 亚洲欧美日韩小说| 日韩电影在线看| 春色校园综合激情亚洲| 欧美午夜宅男影院| 久久精品亚洲乱码伦伦中文| 亚洲乱码国产乱码精品精可以看| 日韩电影在线观看电影| 国产乱人伦偷精品视频免下载| 99国产精品国产精品毛片| 欧美老年两性高潮| 国产精品欧美一区二区三区| 亚洲福利视频导航| 国产精品一品二品| 欧美色视频一区| 国产精品国产自产拍在线| 偷拍自拍另类欧美| 成人动漫精品一区二区| 日韩视频一区二区三区| 亚洲欧美偷拍三级| 蜜桃av噜噜一区| 欧美日韩国产欧美日美国产精品| 欧美r级在线观看| 亚洲电影一区二区三区| 成人午夜av电影| 欧美成人伊人久久综合网| 亚洲精品自拍动漫在线| 国产一区不卡在线| 日韩欧美在线一区二区三区| 午夜视频久久久久久| 91免费视频网址| 国产精品国产自产拍在线| 国产精品一区二区三区乱码| 日韩一级二级三级| 日韩精品一二三区| 欧美日韩午夜影院| 亚洲电影在线免费观看| 色婷婷亚洲一区二区三区| 国产女人18水真多18精品一级做| 久久69国产一区二区蜜臀 | 欧美亚洲一区三区| 亚洲欧美日韩国产手机在线 | av一本久道久久综合久久鬼色| 555www色欧美视频| 亚洲成人自拍偷拍| 欧美日韩中文精品| 亚洲一区二区影院| 欧美日精品一区视频| 一区二区三区四区av| 在线免费观看日本一区| 亚洲私人影院在线观看| av不卡一区二区三区| 综合在线观看色| 91原创在线视频| 亚洲一卡二卡三卡四卡五卡| 欧美日韩中文国产| 日韩激情视频在线观看| 欧美精品精品一区| 青青草97国产精品免费观看| 精品久久久三级丝袜| 极品少妇xxxx精品少妇| 国产亚洲污的网站| 91在线观看视频| 亚州成人在线电影| 精品久久久久av影院| 国产91精品精华液一区二区三区 | 久久久久亚洲蜜桃| 成人av网在线| 亚洲自拍与偷拍| 91麻豆精品91久久久久同性| 免费亚洲电影在线| 欧美激情综合五月色丁香小说| 成人v精品蜜桃久久一区| 依依成人精品视频| 91精品国产91久久久久久一区二区| 麻豆国产精品777777在线| 久久久精品影视| 色视频成人在线观看免| 日韩国产欧美在线观看| 国产欧美日韩综合| 91成人国产精品| 国产剧情一区在线| 一区二区三区中文在线| 日韩一区二区免费电影| 成人免费va视频| 日韩成人av影视| 中文av一区二区| 欧美一区二区免费视频| 99re视频这里只有精品| 蜜桃视频一区二区| 一区二区三区四区在线播放 | 成人福利视频在线看| 视频一区欧美精品| 亚洲色图在线视频| 精品欧美一区二区久久| 色哟哟亚洲精品| 国v精品久久久网| 日韩av电影免费观看高清完整版在线观看 | 午夜精品久久久久久久久久| 国产午夜一区二区三区| 欧美日韩精品系列| 成人av先锋影音| 国产精品一区二区在线播放 | 夜夜嗨av一区二区三区四季av| 久久蜜桃av一区二区天堂| 欧美卡1卡2卡| 91成人国产精品| 色狠狠综合天天综合综合| 粉嫩aⅴ一区二区三区四区| 久久精品久久综合| 亚洲成人tv网|