svnno****@sourc*****
svnno****@sourc*****
2011年 5月 7日 (土) 22:04:42 JST
Revision: 2661 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2661 Author: dhrname Date: 2011-05-07 22:04:42 +0900 (Sat, 07 May 2011) Log Message: ----------- CSSパーサを使ってSVGStyleElementのStyleSheetオブジェクトを実装 Modified Paths: -------------- branches/07x/077/org/w3c/dom/svg.js Modified: branches/07x/077/org/w3c/dom/svg.js =================================================================== --- branches/07x/077/org/w3c/dom/svg.js 2011-05-05 11:40:34 UTC (rev 2660) +++ branches/07x/077/org/w3c/dom/svg.js 2011-05-07 13:04:42 UTC (rev 2661) @@ -1924,18 +1924,27 @@ }, false); this.addEventListener("SVGLoad", function(evt){ var tar = evt.target, - style = tar._text, - tod = tar.ownerDocument; + sheet = tar.sheet, + styleText = tar._text, + tod = tar.ownerDocument, + style = document.createElement("style"), + i, rules, rli, ri; NAIBU._temp_doc = tod; - tar.sheet = tod.styleSheets[tod.styleSheets.length] = DOMImplementation.createCSSStyleSheet(tar.title, tar.media); - tar.sheet.ownerNode = tar; + sheet = tod.styleSheets[tod.styleSheets.length] = DOMImplementation.createCSSStyleSheet(tar.title, tar.media); + sheet.ownerNode = tar; + /*以下は、IEのCSSパーサを使って、スタイルシートのルールを実装していく*/ + style.styleSheet.cssText = styleText; + for (i=0, rules=style.styleSheet.rules, rli=rules.length;i<rli;++i) { + ri = rules[i]; + sheet.insertRule(ri.cssText, i); + } tod.documentElement._svgload_limited--; if (tod.documentElement._svgload_limited < 0) { evt = tod.createEvent("SVGEvents"); evt.initEvent("SVGLoad", false, false); tod.documentElement.dispatchEvent(evt); } - tar = evt = style = null; + tar = evt = style = sheet = styleText = tod = i = rules = rli = null; }, false); this.addEventListener("DOMNodeInserted", function(evt){ var tar = evt.target;