成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁(yè)>>軟件教程>>新聞內(nèi)容  
提高你的DHTML性能
作者: 發(fā)布時(shí)間:2003-11-6 16:17:53 | 【字體:

資料來(lái)源:MSDN
[英文原文]
msdn.microsoft.com/library/en-us/dnwebgen/html/dhtmlperf.asp?frame=true
[中文譯文]
www.microsoft.com/china/msdn/msdnonline/features/articles/dhtmlperf.asp

1.盡量使用同一個(gè)腳本函數(shù)來(lái)改變HTML內(nèi)容。如果有多個(gè)事件觸發(fā),盡量只改變同一個(gè)地方。

2.盡量把內(nèi)容集中起來(lái)一次更新。如果不是特別需要有HTML的內(nèi)容,盡量使用innerText代替innerHTML

Slow:
divUpdate.innerHTML = "";
for ( var i=0; i<100; i++ )
{
  divUpdate.innerHTML += "<SPAN>This is a slower method! </SPAN>";
}

Fast:
var str="";
for ( var i=0; i<100; i++ )
{
  str += "<SPAN>This is faster because it uses a string! </SPAN>";
}
divUpdate.innerHTML = str;

3.更新文本內(nèi)容時(shí)盡量使用innerText而不是DOM的createTextNode

Slow:
var node;
for (var i=0; i<100; i++)
{
  node = document.createElement( "SPAN" );
  node.appendChild(  document.createTextNode( " Using createTextNode() " ) );
  divUpdate.appendChild( node );
}

Fast:
 var node;
for (var i=0; i<100; i++)
{
  node = document.createElement( "SPAN" );
  node.innerText = " Using innerText property ";
  divUpdate.appendChild( node );
}

4.盡量使用createElement 和 insertAdjacentElement 方法,而不是 insertAdjacentHTML

Slow:
for (var i=0; i<100; i++)
{
  divUpdate.insertAdjacentHTML( "beforeEnd", "<SPAN> Uses insertAdjacentHTML() </SPAN>" );
}

Fast:
 var node;
for (var i=0; i<100; i++)
{
  node = document.createElement( "SPAN" );
  node.innerText = " Uses insertAdjacentElement() ";
  divUpdate.insertAdjacentElement( "beforeEnd", node );
}


5.在數(shù)目巨大的情況下,盡量使用innerHTML 來(lái)添加項(xiàng)

Slow:
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 = "Item " + i;
}

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

Faster:
var arr = new Array(1000);
for (var i=0; i<1000; i++)
{
  arr[i] = "<OPTION>Item " + i + "</OPTION>";
}
divUpdate.innerHTML = "<SELECT ID='selUpdate'>" + arr.join() + "</SELECT>";

6.使用DOM來(lái)創(chuàng)建表格比TOM(insertRow,insertCell)好的多

Slow:
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 = "Row " + i + ", Cell " + j;
  }
}

Fast:
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 = "Row " + i + ", Cell " + j;
  }
}

7.通用的操作,盡量放在一個(gè)單獨(dú)的外部腳本文件里

8.約束你的動(dòng)態(tài)屬性(指setExpression的用法)

9.使用數(shù)據(jù)綁定來(lái)顯示你的資料,你可以使用排序、過(guò)濾等操作來(lái)提供不同視圖,但只需要訪問(wèn)一次服務(wù)器(減少頻繁訪問(wèn)服務(wù)器的問(wèn)題)

10.不要把自定義的屬性加到document對(duì)象上,這會(huì)使得每次讀取該屬性時(shí)進(jìn)行額外的重算。推薦加在window對(duì)象上

Slow:
for (var i=0; i<1000; i++)
{
  var tmp;
  window.document.myProperty = "Item "+i;
  tmp = window.document.myProperty;
}

Fast:
for (var i=0; i<1000; i++)
{
  var tmp;
  window.myProperty = "Item "+i;
  tmp = window.myProperty;
}

11.盡量直接使用style對(duì)象來(lái)改變HTML對(duì)象外觀,而不是className或者跟clas關(guān)聯(lián)的styleSheet對(duì)象

12.在訪問(wèn)textrange對(duì)象的父對(duì)象(指parentElement方法的返回值)時(shí),先collapse合并range,尤其是復(fù)雜的range

13.先插入對(duì)象,然后添加它的內(nèi)容

Slow
(1).create <TR>
(2).create <TD>

(3)create TextNode
(4)insert TextNode into <TD>
如前所述,這里用innerText會(huì)更快

(5)insert <TD> into <TR>
(6)insert <TR> into TBODY

Fast
(1)create <TR>
(2)create <TD>

(3)create TextNode
如前所述,這里用innerText會(huì)更快

(4)insert <TR> into TBODY
(5)insert <TD> into <TR>

(6)insert TextNode into <TD>
如前所述,這里用innerText會(huì)更快

14.用posLeft,posTop,posWidth,posHeight來(lái)代替left,top等,減少字符串->數(shù)值的轉(zhuǎn)換

15.盡可能少的使用定時(shí)器(指setTimeout,setInterval這些),而在同一個(gè)定時(shí)器里對(duì)所有要變化的對(duì)象進(jìn)行操作


文章來(lái)源:MSDN
 放生
 愚愛(ài)
 夠愛(ài)
 觸電
 白狐
 葬愛(ài)
 光榮
 畫(huà)心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛(ài)
 擦肩而過(guò)
 我的答鈴
 懷念過(guò)去
 等一分鐘
 放手去愛(ài)
 冰河時(shí)代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛(ài)人
 一定要愛(ài)你
 飛向別人的床
 愛(ài)上別人的人
 感動(dòng)天感動(dòng)地
 心在跳情在燒
 玫瑰花的葬禮
 有沒(méi)有人告訴你
 即使知道要見(jiàn)面
 愛(ài)上你是一個(gè)錯(cuò)
 最后一次的溫柔
 愛(ài)上你是我的錯(cuò)
 怎么會(huì)狠心傷害我
 不是因?yàn)榧拍畔?/a>
 親愛(ài)的那不是愛(ài)情
 難道愛(ài)一個(gè)人有錯(cuò)
 寂寞的時(shí)候說(shuō)愛(ài)我
主站蜘蛛池模板: 望都县| 大同县| 漳平市| 陈巴尔虎旗| 临潭县| 陈巴尔虎旗| 旺苍县| 高密市| 岳普湖县| 衡阳市| 泰州市| 秦安县| 威远县| 砚山县| 额尔古纳市| 页游| 华容县| 麻江县| 板桥市| 广东省| 资源县| 常州市| 碌曲县| 慈溪市| 山阴县| 安康市| 油尖旺区| 邯郸县| 晋江市| 阳东县| 堆龙德庆县| 尼玛县| 宁蒗| 梨树县| 南澳县| 萨迦县| 安陆市| 深圳市| 肇州县| 恩施市| 东宁县|