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

document.getElementsByTagNameNS(prefix,"*");
document.getElementsByTagNameNS("*",tagName);
element.getAttributeNS(prefix,"*");
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

	create: function ()
	{
		var doc=this.document;
		doc.DOM=this.Class;
		var root=doc.documentElement;
		doc.nameSpaces=new Hash;
		var namespaces=doc.nameSpaces;
		var exp=(/xmlns:[\w]+/i);
		
		if (root.outerHTML)
		{
			//ie6,ie7 contains xmlns:foo in outerHTML only
			var html=root.outerHTML.match(/<html[^>]*>/i)[0];
			var attributes=html.match(/xmlns:[\w]+[\W]*=[\W]*"[^"]*"/ig);
			if (attributes)
			{
				var exp=/xmlns:([\w]+)[\W]*=[\W]*"([^"]*)"/i;
				for (var i=0; i<attributes.length; i++)
				{
					var attr=attributes[i];
					var temp=attr.match(exp);
					var item={}
					item.prefix=temp[1];
					item.namespaceURI=temp[2];
					namespaces.set(item.prefix,item);
				}
			}
		}
		else
		{
			//ff contains xmlns:foo in attributes collection
			for (var i=0; i<root.attributes.length; i++)
			{
				var attr=root.attributes[i];
				var name=attr.nodeName;
				if (exp.test(name))
				{
					var item={}
					var temp=name.split(":");
					item.prefix=temp[1];
					item.namespaceURI=attr.nodeValue;
					namespaces.set(item.prefix,item);
				}
			}
		}
	}