2016-05-10 7 views
1

offsetLeft JavaScriptのプロパティに時間がかかります。offsetLeft Javascriptプロパティに時間がかかります

offLeft = $( 'DIV')[0] Chromeのプロファイリングとチェックしながら、

を.offsetLeft、私は私のコードを実行している間、このoffsetLeftはより多くの時間を要する発見しました。 offsetLeftプロパティを置き換えるための任意の提案?

function firstcol() { 
     var sheet = this.getSheet(), left, right, leftIdx, rightIdx, hScroll = this._hScroller(sheetIdx), colWtColl = sheet._colWidthCollection, 
      hhandle = hScroll.element.find(".e-hhandle"), hsLeft = parseInt(**hhandle[0].offsetLeft**); 
     left = hsLeft * hScroll._scrollData.onePx; 
     right = (hsLeft + hhandle[0].offsetWidth) * hScroll._scrollData.onePx; 
     leftIdx = this._sortProcess(colWtColl, left); 
     sheet._leftCol = { idx: leftIdx, value: colWtColl[leftIdx] }; 
     rightIdx = this._sortProcess(colWtColl, right); 
     sheet._rightCol = { idx: rightIdx, value: colWtColl[rightIdx] }; 
    } 

このコードブロックでは、実行するのに1500msかかるが、offsetLftは1100msかかる。どのように私はこれを減らすことができます。この350ミリ秒の平均実行時間。

答えて

0

オフセット*プロパティは、ページフローを最新にする必要があります。以前にDOMやスタイリングを変更して現在計算されているフローを無効にした場合は、offsetLeftを取得するとブラウザがページをリフロします。それは時間がかかるリフローです。このような前回の変更を行っていない場合、offsetLeftは現在のページフローを使用することができ、高速です。

したがって、問題はoffsetLeft自体ではなく、最後のページのリフロー以降に先行するJSです。

関連する問題