[Sie-announce] SIEコード [1660] getComputedStyleメソッドの実装

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2010年 2月 14日 (日) 22:42:29 JST


Revision: 1660
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1660
Author:   dhrname
Date:     2010-02-14 22:42:29 +0900 (Sun, 14 Feb 2010)

Log Message:
-----------
getComputedStyleメソッドの実装

Modified Paths:
--------------
    branches/ufltima/dom/css.js

Modified: branches/ufltima/dom/css.js
===================================================================
--- branches/ufltima/dom/css.js	2010-02-12 12:09:02 UTC (rev 1659)
+++ branches/ufltima/dom/css.js	2010-02-14 13:42:29 UTC (rev 1660)
@@ -596,6 +596,24 @@
   textAnchor : "start",
   writingMode : "lr-tb"
 };
+/*以下は、getComputedStyleメソッドで使うために、CSS2Propertiesの_listプロパティに、
+ *CSSprimitiveValueのリストを収納している。なお、その際に、writingModeなどはwriting-modeに変更している
+ */
+(function(){
+  var s = [], az = /([A-Z])/g;
+  for (var i in CSS2Properties) {
+    if(CSS2Properties.hasOwnProperty(i)) {
+      var n = s[s.length] = new CSSPrimitiveValue();
+      t = i.replace(az, "-" +RegExp.$1.toLowerCase());
+      n.cssText += t;
+      n.cssText += ":";
+      n.cssText += CSS2Properties[i];
+      n = p = m = i = t = u = null;
+    }
+  }
+  CSS2Properties._list = s;
+  az = null;
+})();
 
 function CSSStyleSheet() {
 /*CSSRule*/      this.ownerRule = null;
@@ -623,18 +641,10 @@
   /*CSSStyleDeclaration*/ getComputedStyle : function( /*Element*/ elt, /*string*/ pseudoElt) {
     var s = new CSSStyleDeclaration();
     do {
-      var eps = elt.style;
-      for (var i=0,eli=eps.length;i<eli;++i) {
-        var propertyName = eps.item[i];
-        s.setProperty(propertyName, eps.getPropertyValue(propertyName), eps.getPropertyPriority(propertyName));
-        elt = elt.parentNode;
-       }      
+      s._list = s._list.concat(elt.style._list); //リストを連結することによって、カスケーディングを実現する
+      elt = elt.parentNode;     
     } while (elt);
-    for (var i in CSS2Properties) { //デフォルト値の設定をする
-      if (CSS2Property.hasOwnProperty(i) && !(s.getPropertyCSSValue(i)) ) {
-        s.setProperty(i, CSS2Properties[i], "");
-      }
-    }
+    s._list = s._list.concat(CSS2Properties._list); //デフォルト値の設定
     return s;
   }
 };
@@ -644,7 +654,6 @@
  */
 /*function DocumentCSS : stylesheets::DocumentStyle {*/
 /*CSSStyleDeclaration*/ Document.prototype.getOverrideStyle = function( /*Element*/ elt, /*string*/ pseudoElt) {
-  return (elt.paint);
 };
 /*createCSSStyleSheetメソッド
  *文書のスタイルシートを作成




Sie-announce メーリングリストの案内
Zurück zum Archiv-Index