亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當前位置:首頁 > 網(wǎng)站舊欄目 > 學習園地 > 名師教程 > 加快 DHTML 的一組技巧

加快 DHTML 的一組技巧
2006-04-07 10:29:15  作者:就業(yè)辦  來源:
動態(tài) HTML (DHTML )在 Microsoft? Internet Explorer 4.0中的 
    引入,使 Web作者和開發(fā)人員可以使用新的編程模型。此后,Web 作者充 
    分利用了這個強大的特性來提供動態(tài)內容、樣式和定位,使 Web用戶得以 
    體驗豐富的交互式功能。DHTML 的靈活性使得通常會有多種方式可以實現(xiàn) 
    您的構思。理解 Internet Explorer的 HTML 分析和顯示組件如何處理請 
    求,可幫助您確定完成工作的最佳方法。本文介紹了某些 DHTML功能對性 
    能的重大影響,并提供了一些提高頁面性能的技巧。 
     
    成批處理 DHTML 更改 
     
      在 DHTML Web頁面上,提高性能的最有效方法是改進對頁面上 HTML 
    內容的更改。有多種方法可以更新 Web頁面,了解這一點非常重要。從客 
    戶的反饋來看,Web 作者可以應用 HTML 文本塊,也可以通過使用 DHTML 
    對象模型(英文)或 W3C文檔對象模型(DOM )(英文)來訪問個別 HTML 
    元素。無論何時更改 HTML 內容,Internet Explorer 的 HTML 分析和顯 
    示組件都必須重新組織該頁面的內部表現(xiàn)形式,重新計算文檔布局和文檔 
    流,并顯示這些變化。雖然實際性能由 Web頁面的內容和您所作的更改決 
    定,但是這些操作代價都比較大。如果您應用 HTML 文本塊,而不是個別 
    訪問元素,則必須調用HTML分析器,這將導致額外的性能開銷。接受HTML 
    文本的方法和屬性包括 insertAdjacentHTML (英文)和 pasteHTML(英 
    文)方法,以及 innerHTML(英文)和 outerHTML(英文)屬性。 
     
    技巧 1:在一個腳本函數(shù)中對 HTML 內容進行更改。如果您的設計使用 
        了多個事件處理程序(例如響應鼠標移動),則應集中進行更 
        改。 
     
      HTML分析和顯示組件的另一項重要事實是:一旦腳本返回控制(例如, 
    當腳本事件處理函數(shù)退出時,或者當調用setTimeout(英文)等方法時), 
    該組件將重新計算布局并顯示W(wǎng)eb頁面。現(xiàn)在您已經(jīng)了解Internet Explorer 
    如何處理變化,下面將開始提高 Web頁面的性能。 
     
    技巧2:建立一個 HTML 字符串并對文檔進行一次更改,而不是進行多 
        次更新。如果 HTML 內容不是必要的,可考慮使用       
        innerText(英文)屬性。 
     
      在以下示例中,速度較慢的方法每次設置innerHTML屬性時都調用HTML 
    分析器。要提高性能,可以先建立一個字符串,然后將其分配給innerHTML 
    屬性。 
     
    慢: 
     
     divUpdate.innerHTML = ""; 
     for ( var i=0; i<100; i++ ) 
     { 
     divUpdate.innerHTML += "這是一個較慢的方法!"; 
     } 
     
    快: 
     
     var str=""; 
     for ( var i=0; i<100; i++ ) 
     { 
     str += "因為使用字符串,此方法較快!"; 
     } 
     divUpdate.innerHTML = str; 
     
    使用 innerText 
     
      DHTML 對象模型通過 innerText(英文)屬性訪問 HTML 元素的文本 
    內容,而 W3C DOM則提供一個獨立的子文本節(jié)點。直接通過 innerText屬 
    性更新元素的內容,比調用 DOM createTextNode (英文)方法更快。 
     
    技巧 3:使用 innerText 屬性更新文本內容。 
     
    以下示例顯示了如何使用 innerText 屬性提高性能。 
     
    慢: 
     
     var node; 
     for (var i=0; i<100; i++) 
     { 
     node = document.createElement( "SPAN" ); 
     node.appendChild( document.createTextNode( "使用 createText 
     Node() ") ); 
     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 分析器,從 
    而會降低性能。因此,使用 createElement(英文)和 insertAdjacent 
    Element(英文)方法添加元素比調用一次 insertAdjacentHTML 方法快。 
     
    技巧 4:調用 createElement 和 insertAdjacentElement 方法比調用 
        insertAdjacentHTML 方法快。 
     
      成批處理 DHTML更新并調用一次 insertAdjacentHTML 方法可以提高 
    性能,但是有時直接通過 DOM創(chuàng)建元素效率更高。在下面的方案中,您可 
    以嘗試一下這兩種方法并確定哪一種更快。 
     
    慢: 
     
     for (var i=0; i<100; i++) 
     { 
     divUpdate.insertAdjacentHTML( "beforeEnd", " 使用 insert 
     AdjacentHTML() " ); 
     } 
     
    快: 
     
     var node; 
     for (var i=0; i<100; i++) 
     { 
     node = document.createElement( "SPAN" ); 
     node.innerText = " 使用 insertAdjacentElement() "; 
     divUpdate.insertAdjacentElement( "beforeEnd", node ); 
     } 
     
    擴展 SELECT 元素中的選項 
     
      對于上一條使用 HTML 文本方法的規(guī)則來說,將大量OPTION(英文) 
    元素添加到SELECT(英文)中的情況是一種例外。這時候,使用innerHTML 
    屬性比調用createElement方法訪問選項集合效率更高。 
     
    技巧 5:使用 innerHTML 將大量選項添加到 SELECT 元素中。 
     
      使用字符串連接操作來建立 SELECT 元素的 HTML 文本,然后使用此 
    技巧設置 innerHTML屬性。對于數(shù)量特別大的選項,字符串連接操作也會 
    影響性能。在此情況下,請建立一個數(shù)組并調用 Microsoft JScript join 
    (英文)方法來執(zhí)行 OPTION 元素 HTML 文本的最終連接。 
     
    慢: 
     
     var opt; 
     divUpdate.innerHTML = "〈SELECT ID='selUpdate'〉"; 
     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 += ""; 
     divUpdate.innerHTML = str; 
     
    更快: 
     
     var arr = new Array(1000); 
     for (var i=0; i<1000; i++) 
     { 
     arr[i] = "〈OPTION〉第 " + i + " 項〈/OPTION〉"; 
     } 
     divUpdate.innerHTML = "〈SELECT ID='selUpdate'〉" + arr.join() + " 
     "; 
     
    用 DOM 更新表 
     
      使用DOM方法插入表的行和單元格比使用insertRow(英文)和insert 
    Cell(英文)方法(DHTML table 對象模型的一部分)效率更高。尤其在 
    創(chuàng)建大的表時,效率上的差別更加明顯。 
     
    技巧 6:使用 DOM 方法建立大表。 
     
    慢: 
     
     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站點使用腳本來執(zhí)行一些常用操作,可以考慮將這些功 
    能放到獨立的文件中,以便可以由多個 Web頁面重復使用。這樣做,不僅 
    可以改善代碼的維護性,而且使該腳本文件保留在瀏覽器的緩存中,從而 
    只需要在用戶訪問站點時向本地下載一次。將常用的樣式規(guī)則放在獨立的 
    文件中也可以得到同樣的好處。 
     
    技巧 7:通過將常用代碼放到行為或獨立文件中來重用腳本 
     
      要更好地利用腳本重用功能,請將常用的腳本操作放到 DHTML附加代 
    碼或元素行為(英文)中。行為提供了一個有效的方法,用于重用腳本和 
    建立從 HTML 訪問的組件,并使您可用自己的對象、方法、屬性和事件來 
    擴展 DHTML對象模型。對于未使用 viewlink (英文)功能的行為,可以 
    考慮使用 Internet Explorer 5.5中的 lightweight(英文)行為特性進 
    行更有效的代碼封裝。另外,如果您的腳本代碼在一個 SCRIPT (英文) 
    塊中,會獲得更高的性能。 
     
    請勿過多使用動態(tài)屬性 
     
      動態(tài)屬性(英文)為 Web作者提供了一種將表達式用作屬性值的方法。 
    表達式在運行時計算,其結果值將應用于屬性。這是一個強大的特性。此 
    特性可用于減少頁面上的腳本數(shù)量,但是因為必須定時重算表達式,而且 
    該表達式經(jīng)常與其他屬性值相關,所以它會對性能帶來消極的影響。這種 
    情況對定位屬性尤其明顯。 
     
    技巧 8:限制使用動態(tài)屬性。 
     
    數(shù)據(jù)綁定很有效 
     
      數(shù)據(jù)綁定(英文)是一個強大的功能,它使您可以將數(shù)據(jù)庫查詢的結 
    果或 XML數(shù)據(jù)島(英文)的內容,綁定至 Web頁面上的 HTML 元素。您無 
    需返回服務器提取數(shù)據(jù),就可以提供數(shù)據(jù)排序和過濾功能,以及不同的數(shù) 
    據(jù)視圖。設想一個 Web頁面可以將公司的數(shù)據(jù)顯示為折線圖、條形圖或餅 
    圖,還具有將數(shù)據(jù)按辦公室、產品或銷售階段排序的按鈕,而且所有這些 
    功能只需要訪問一次服務器就能實現(xiàn)。 
     
    技巧 9:使用數(shù)據(jù)綁定來提供豐富的客戶端數(shù)據(jù)視圖。 
     
    不要在 document 對象中設置 expando 屬性 
     
      expando (英文)屬性可以添加至任何對象。此屬性非常有用,它可 
    以存儲當前 Wed頁面內的信息,并提供了另一種擴展 DHTML對象模型的方 
    法。例如,您可以給 DHTML元素指定一個 clicked屬性,用此屬性提示用 
    戶已經(jīng)單擊了哪一個元素。在引發(fā)事件時,也可以使用 expando屬性,向 
    事件處理函數(shù)提供更多的上下文信息。無論您如何使用 expando屬性,切 
    記不要在 document (英文)對象上設置它們。如果您這樣做,則當您訪 
    問該屬性時,文檔必須執(zhí)行額外的重算操作。 
     
    技巧 10:在 window(英文)對象上設置 expando 屬性。 
     
    慢: 
     
    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; 
     } 
     
    避免切換類和樣式規(guī)則 
     
      切換類和樣式規(guī)則是一種代價非常高的操作,需要重新計算并調整整 
    個文檔的布局。如果您的 Web站點使用樣式表來提供內容的備用視圖,可 
    以考慮直接修改要更改的元素的 style(英文)對象,而不是修改元素的 
    className (英文)屬性或與類關聯(lián)的 styleSheet (英文)對象。 
     
    技巧 11:在更改內容的外觀時,直接修改 style 對象。 
     
    查找父項之前,先折疊文本范圍 
     
      TextRange (英文)對象表示用戶選定或從 HTML 元素中檢索的一個 
    文本區(qū)域,例如 BODY (英文)。通過調用 parentElement(英文)方法, 
    可以標識文本范圍的父項。對于復雜的文本范圍,在調用 parentElement 
    方法之前,先調用 collapse (英文)方法效率會更高。 
     
    技巧 12:在訪問 parentElement 方法之前,先折疊文本范圍。 

安徽新華電腦學校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
春日野结衣av| 亚洲乱码日产精品bd在线观看| 国内精品小视频在线观看| 日本不卡免费新一二三区| 日本免费高清不卡| 色中文字幕在线观看| 日韩五码在线观看| 欧洲精品久久久| 青青草国产精品| 欧美二区在线看| 国产日韩精品在线| 国产日韩在线视频| 国产精品亚洲天堂| av无码精品一区二区三区| 99久re热视频精品98| 97国产精品免费视频| 久久久亚洲影院你懂的| 久久久久久国产免费| 国产精品欧美一区二区 | 国内精品国语自产拍在线观看| 日韩精品一区二区三区外面| 欧美国产二区| 国产精品午夜视频| 99精品一级欧美片免费播放| 久热国产精品视频一区二区三区| 国产成人一区二区在线| 久久久久久国产免费| 国产精品视频永久免费播放| 国产精品三区四区| 蜜臀久久99精品久久久无需会员| 在线观看一区欧美| 亚洲a级在线播放观看| 欧美在线性视频| 国产主播喷水一区二区| 福利视频一区二区三区四区| 成人精品视频久久久久| 久久另类ts人妖一区二区| 国产成人激情小视频| 久久久久久久久久久网站| 国产精品女人久久久久久| 伊人久久99| 青青在线免费观看| 国产美女精品视频| 日韩中文字幕在线视频播放 | 欧美影院在线播放| 国产综合av一区二区三区| 91精品国产综合久久香蕉922 | 国产精品久久久久久久久久久久| 欧美激情久久久久| 日本一区二区三区四区视频| 精品欧美国产| 国产黑人绿帽在线第一区| 国产精品久久久久久久久久| 亚洲一区二区免费在线| 激情五月亚洲色图| 久久久国产精华液999999| 国产精品果冻传媒潘| 丁香六月激情婷婷| 国产色婷婷国产综合在线理论片a| 91久久偷偷做嫩草影院| xxxx性欧美| 亚洲欧美综合一区| 国产自产在线视频| 日韩一级裸体免费视频| 亚洲va久久久噜噜噜久久天堂| 国产亚洲一区二区三区在线播放| 久久久久资源| 亚洲在线免费看| 国产日韩一区二区| www.日韩免费| 色一情一乱一乱一区91| 国产久一一精品| 国产精品久久久一区二区三区| 欧美一级片免费播放| 国产噜噜噜噜久久久久久久久| 久久精品国产精品亚洲| 性色av香蕉一区二区| 国产卡一卡二在线| 久久综合五月天| 女女同性女同一区二区三区按摩| 久久精品五月婷婷| 欧美一区二区三区免费视| www.亚洲一区二区| 亚洲图片在线观看| chinese少妇国语对白| 欧美黄网免费在线观看| 国产免费一区二区三区四在线播放| 久久精品国产96久久久香蕉| 欧美做受777cos| 国产成人免费高清视频| 青青青免费在线| 精品国内自产拍在线观看| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产精品99久久久久久久久| 在线天堂一区av电影| 国产中文一区二区| 国产精品久久久久久久久久久久| 日韩视频一二三| 国产a一区二区| 日韩激情视频| 国产精品美女av| 国产日韩精品在线观看| 久久久久国色av免费观看性色| 国产日韩一区二区在线| 欧美精品www| av无码精品一区二区三区| 亚洲欧洲一区二区在线观看| 91高清免费在线观看| 日本一区免费在线观看| 久久久久se| 欧美夜福利tv在线| 插插插亚洲综合网| 国产精品亚洲аv天堂网| 国产99视频在线观看| 97精品在线视频| 日本不卡在线播放| 国产精品久久av| 99久热re在线精品视频| 日韩精品大片| 久久综合色88| 久久久久久艹| 蜜桃av噜噜一区二区三| 午夜免费久久久久| 久久久99免费视频| y111111国产精品久久婷婷| 日本高清一区| 欧美日韩国产成人在线观看| 91国偷自产一区二区三区的观看方式 | 久久久精品在线视频| 欧美午夜欧美| 一区二区在线观看网站| 久久久久女教师免费一区| 国产在线视频欧美| 日韩av免费在线播放| 国产精品成熟老女人| 91国产精品91| 免费看欧美黑人毛片| 亚洲色成人一区二区三区小说 | 国产精品美女黄网| 91久热免费在线视频| 欧美精品一区二区三区在线看午夜| 欧美xxxx14xxxxx性爽| 久久久久久久久久久久久9999| 国产精品一二三在线观看| 人人妻人人澡人人爽欧美一区 | 日韩在线一级片| 蜜臀久久99精品久久久久久宅男| 国产a级一级片| 成人在线观看毛片| 韩国欧美亚洲国产| 日韩午夜视频在线观看| 中文精品一区二区三区| 国产成人手机视频| 久久天天东北熟女毛茸茸| 国产欧美123| 欧美成人蜜桃| 青草青草久热精品视频在线网站| 亚洲欧洲免费无码| 一区二区三区精品国产| 欧美日韩ab片| 国产精品成人久久电影| 国产精品视频白浆免费视频| 国产成人亚洲综合| 成人精品一区二区三区电影黑人| 国内精品视频在线| 欧美日韩亚洲在线| 欧美日韩午夜爽爽| 日韩精品在在线一区二区中文| 亚洲欧美精品| 伊人久久99| 中文网丁香综合网| 一区二区视频在线观看| 精品国产一区二区三| 国产精品成人久久电影| 国产精品美女网站| 国产精品久久7| 国产精品热视频| 国产精品久久一区主播| 国产成人免费av电影| 久久久久久久av| 久久爱av电影| 久久久久久久久久久福利| 色久欧美在线视频观看| 播播国产欧美激情| 国产精品视频久久久久| 国产精品免费视频xxxx| 国产精品高潮呻吟视频| 国产精品第七影院| 精品综合久久久久久97| 在线观看免费黄色片| 亚洲一区二区在线| 少妇人妻在线视频| 欧美又粗又长又爽做受| 日韩精品不卡| 欧美日韩国产三区| 国产综合久久久久久| www.九色.com| 久久av高潮av| 国产精品黄视频| 一区二区三视频|