svnno****@sourc*****
svnno****@sourc*****
2010年 2月 27日 (土) 23:15:45 JST
Revision: 1682 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1682 Author: dhrname Date: 2010-02-27 23:15:45 +0900 (Sat, 27 Feb 2010) Log Message: ----------- createElementNSメソッドを修正 Modified Paths: -------------- branches/ufltima/core.js Modified: branches/ufltima/core.js =================================================================== --- branches/ufltima/core.js 2010-02-24 14:02:23 UTC (rev 1681) +++ branches/ufltima/core.js 2010-02-27 14:15:45 UTC (rev 1682) @@ -196,7 +196,7 @@ try { var s; if (ns) { - s = new (DOMImplementation._map[ns].Document); + s = new (DOMImplementation[ns].Document); } else { s = new Document(); } @@ -205,7 +205,8 @@ s.doctype = doctype; return s; } catch(e){alert(e.message);} - } + }, + "http://www.w3.org/xmlns/1998": {} } /* Node @@ -898,21 +899,33 @@ *例:var s = DOC.createElementNS("http://www.w3.org/2000/svg", "svg:svg"); */ /*Element*/ Document.prototype.createElementNS = function( /*string*/ namespaceURI, /*string*/ qualifiedName) { - var ele, s; + var ele, s, prefix = null, localName = null; if (!qualifiedName) { throw (new DOMException(DOMException.INVALID_CHARACTER_ERR)); } - ele = new Element(); - ele.namespaceURI = namespaceURI; - ele.nodeName = ele.tagName = qualifiedName; if (qualifiedName.indexOf(":") !== -1){ - var p = qualifiedName.split(":"); - ele.prefix = p[0]; - ele.localName = p[1]; + var p = qualifiedName.split(":"); + prefix = p[0]; + localName = p[1]; } else { - ele.prefix = null; - ele.localName = qualifiedName; + localName = qualifiedName; } + if (namespaceURI) { + var ti = this.implementation; + if (!!ti[namespaceURI]) { + if (!!ti[namespaceURI][localName]) { //もし、名前空間とローカル名によって、オブジェクトがあった場合 + ele = new (ti[namespaceURI][localName]); + } + } else { + ele = new Element(); + } + } else { + ele = new Element(); + } + ele.namespaceURI = namespaceURI; + ele.nodeName = ele.tagName = qualifiedName; + ele.localName = localName; + ele.prefix = prefix; ele.ownerDocument = this; return ele; };