ugrás a tartalomhoz

Namespace hogyan?

inf · 2008. Jún. 12. (Cs), 21.29
Üdv, felteszem inkább más formában a kérdést:

Hogyan tudom kezelni a namespace-eket HTML-ben és XML-ben javascript segítségével ff,ie6,ie7 alatt? Én feladtam, egyszerűen ie alatt lehetetlennek tartom, olyan mintha úgy írták volna, hogy direkt kib...nak az emberrel. Azért megkérdem, hátha valakinek mégis megy. Ha a HTML nincs meg, az sem baj, XML fontosabb valamivel.
 
1

Mit szeretnék:

inf · 2008. Jún. 12. (Cs), 21.56
Mindössze annyit szeretnék elérni, hogy
  1. document.getElementsByTagNameNS(prefix,"*");  
  2. document.getElementsByTagNameNS("*",tagName);  
  3. element.getAttributeNS(prefix,"*");  
  4. element.getAttributeNS("*",nodeName);  
minden böngésző alatt szépen menjen... ff alatt össze tudom hozni, ie6,ie7 alatt nem megy több okból sem, dom1-es böngészők, ha <html xmlns:valami="...">-ot akarom lekérni, akkor úgy tesznek, mintha nem létezni a megadott tulajdonság, stbstb..
2

Sikerült

inf · 2008. Jún. 12. (Cs), 23.04
valahogy outerHTML használatával sikerült ievel is kigányolni, hogy a namespaceket kilistázza a html tagből, ez volt a legundorítóbb dolog, amit valaha életemben láttam, gyűlölöm az msie fejlesztőit
  1. create: function ()  
  2. {  
  3.     var doc=this.document;  
  4.     doc.DOM=this.Class;  
  5.     var root=doc.documentElement;  
  6.     doc.nameSpaces=new Hash;  
  7.     var namespaces=doc.nameSpaces;  
  8.     var exp=(/xmlns:[\w]+/i);  
  9.       
  10.     if (root.outerHTML)  
  11.     {  
  12.         //ie6,ie7 contains xmlns:foo in outerHTML only  
  13.         var html=root.outerHTML.match(/<html[^>]*>/i)[0];  
  14.         var attributes=html.match(/xmlns:[\w]+[\W]*=[\W]*"[^"]*"/ig);  
  15.         if (attributes)  
  16.         {  
  17.             var exp=/xmlns:([\w]+)[\W]*=[\W]*"([^"]*)"/i;  
  18.             for (var i=0; i<attributes.length; i++)  
  19.             {  
  20.                 var attr=attributes[i];  
  21.                 var temp=attr.match(exp);  
  22.                 var item={}  
  23.                 item.prefix=temp[1];  
  24.                 item.namespaceURI=temp[2];  
  25.                 namespaces.set(item.prefix,item);  
  26.             }  
  27.         }  
  28.     }  
  29.     else  
  30.     {  
  31.         //ff contains xmlns:foo in attributes collection  
  32.         for (var i=0; i<root.attributes.length; i++)  
  33.         {  
  34.             var attr=root.attributes[i];  
  35.             var name=attr.nodeName;  
  36.             if (exp.test(name))  
  37.             {  
  38.                 var item={}  
  39.                 var temp=name.split(":");  
  40.                 item.prefix=temp[1];  
  41.                 item.namespaceURI=attr.nodeValue;  
  42.                 namespaces.set(item.prefix,item);  
  43.             }  
  44.         }  
  45.     }  
  46. }