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;
};