[Sie-announce] SIEコード [2277] getComputedStyleメソッドにおいて、デフォルト値の検索をリストから外して、ハッシュ検索に変更したことで最適化

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 1月 6日 (木) 23:26:23 JST


Revision: 2277
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2277
Author:   dhrname
Date:     2011-01-06 23:26:22 +0900 (Thu, 06 Jan 2011)

Log Message:
-----------
getComputedStyleメソッドにおいて、デフォルト値の検索をリストから外して、ハッシュ検索に変更したことで最適化

Modified Paths:
--------------
    branches/06x/067/org/w3c/dom/css.js

Modified: branches/06x/067/org/w3c/dom/css.js
===================================================================
--- branches/06x/067/org/w3c/dom/css.js	2011-01-05 14:39:49 UTC (rev 2276)
+++ branches/06x/067/org/w3c/dom/css.js	2011-01-06 14:26:22 UTC (rev 2277)
@@ -185,7 +185,7 @@
  */
 function CSSStyleDeclaration() {
   this._list = []; //内部のリスト
-  this._list._fontSize = this._list._opacity = null;
+  this._def = this._list._fontSize = this._list._opacity = null;
   return this;
 };
 CSSStyleDeclaration.prototype = {
@@ -208,6 +208,7 @@
    *CSSValueオブジェクトを返す。このメソッドは判別に用いているので、削除不可。
    */
 /*CSSValue*/ getPropertyCSSValue : function( /*string*/ propertyName) {
+    var prop = propertyName;
     propertyName += ":";
     if (propertyName === ":") { //どんなデータ型でも、文字列に変換する機能をJavaScriptが持つことに注意
       return null;
@@ -216,11 +217,15 @@
       var ti = this._list[i], tc = ti.cssText;
       if (tc.indexOf(propertyName) > -1) {  //プロパティ名に合致するCSSValueオブジェクトが見つかった場合 
         ti._empercents = this._list._fontSize;
-        propertyName = null;
+        tc = prop = propertyName = null;
         return ti;
       }
     }
-    propertyName = null;
+    if (this._def) {
+      propertyName = null;
+      return (this._def[prop]);
+    }
+    prop = propertyName = null;
     return null;
   },
   /*removePropertyメソッド
@@ -641,8 +646,6 @@
 /*interface ViewCSS : views::AbstractView {*/
 Document.prototype.defaultView = new ViewCSS();
 function ViewCSS(){
-  this._cache = null;
-  this._cache_ele = null;
   return this;
 };
 /*CSSStyleDeclaration*/ ViewCSS.prototype.getComputedStyle = function( /*Element*/ elt, /*string*/ pseudoElt) {
@@ -657,7 +660,7 @@
   if (pelt) {
     var p = this.getComputedStyle(pelt, pseudoElt)._list;
   } else {
-    var p = this._defaultCSS;     //デフォルト値の設定
+    var p = {length:0, _opacity:1, _fontSize:12};
   }
   var q = s._list;
   if (!!elt.style) {
@@ -679,6 +682,7 @@
   for (var i=0,pli=p.length;i<pli;++i) {
     q[q.length] = p[i];
   }
+  s._def = this._defaultCSS;    //デフォルト値の設定
   s._list =  q;
   if (!!elt.style) {
     var eso = elt.style._list._opacity || elt._attributeStyle._list._opacity;




Sie-announce メーリングリストの案内
Back to archive index