[Sie-announce] SIEコード [1682] createElementNSメソッドを修正

Back to archive index

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




Sie-announce メーリングリストの案内
Back to archive index