欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久