svnno****@sourc*****
svnno****@sourc*****
2010年 5月 27日 (木) 23:31:33 JST
Revision: 1847 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1847 Author: dhrname Date: 2010-05-27 23:31:33 +0900 (Thu, 27 May 2010) Log Message: ----------- getFloatValueメソッドの修正 Modified Paths: -------------- branches/ufltima/dom/css.js Modified: branches/ufltima/dom/css.js =================================================================== --- branches/ufltima/dom/css.js 2010-05-25 11:13:16 UTC (rev 1846) +++ branches/ufltima/dom/css.js 2010-05-27 14:31:33 UTC (rev 1847) @@ -316,7 +316,8 @@ this.cssValueType = 1;//CSSValue.CSS_PRIMITIVE_VALUE; this.primitiveType = 0;//CSSPrimitiveValue.CSS_UNKNOWN; this._value = 1; - this._percent = 0.01; //単位に%が使われていた場合、このプロパティの数値を1%として使う + this._percent = 0; //単位に%が使われていた場合、このプロパティの数値を1%として使う + this._empercent = 0; return this; }; @@ -364,6 +365,34 @@ if (CSSPrimitiveValue.CSS_UNKNOWN >= unitType && unitType >= CSSPrimitiveValue.CSS_STRING) { //浮動小数点数単位型をサポートしないCSS単位である場合 throw new DOMException(DOMException.INVALID_ACCESS_ERR); } + var n = this.cssText.match(/\D+$/), type = 0, _parseFloat = parseFloat; + var s = _parseFloat(this.cssText.match(/[\d\.]+/)); + s = isNaN(s) ? 0 : s; + if (!n) { + type = SVGLength.SVG_LENGTHTYPE_NUMBER; + } else if (n === "%") { + var tod = this._document.documentElement; + s *= this._percent; + type = CSSPrimitiveValue.CSS_PERCENTAGE; + } else if (n === "em") { + s *= this._empercent; + type = CSSPrimitiveValue.CSS_EMS; + } else if (n === "ex") { + type = CSSPrimitiveValue.CSS_EXS; + } else if (n === "px") { + type = CSSPrimitiveValue.CSS_PX; + } else if (n === "cm") { + type = CSSPrimitiveValue.CSS_CM; + } else if (n === "mm") { + type = CSSPrimitiveValue.CSS_MM; + } else if (n === "in") { + type = CSSPrimitiveValue.CSS_IN; + } else if (n === "pt") { + type = CSSPrimitiveValue.CSS_PT; + } else if (n === "pc") { + type = CSSPrimitiveValue.CSS_PC; + } + this.setFloatValue(type, s); return (this._value / this._n[unitType-1]); }; /*void*/ CSSPrimitiveValue.prototype.setStringValue = function(/*short*/ stringType, /*string*/ stringValue) { @@ -708,7 +737,7 @@ //リストを連結することによって、カスケーディングを実現する s._list = s._list.concat(elt.style._list); s._list = s._list.concat(elt._attributeStyle._list); //プレゼンテーション属性を結びつける - var doc = elt.ownerDocument, pelt = elt.parentNode; + var pelt = elt.parentNode; if (pelt) { if (this._cache_ele !== pelt) { //キャッシュを更新する this._cache = this.getComputedStyle(pelt, pseudoElt); @@ -718,6 +747,7 @@ } else { s._list = s._list.concat(CSS2Properties._list); //デフォルト値の設定 } + s._document = elt.ownerDocument; return s; };