Javascript insertAdjacentElement, insertAdjacentHTML, insertAdjacentText Cross Browser Compatibility.

Scritto il 17-02-2009 da Vito Antonio Bonardi

Pubblicato su : Programming

4

Chi come me sviluppa software per il web, quotidianamente si trova ad affrontare problemi di compatibilità tra i vari browser.
Il problema che ho riscontrato in questi giorni, riguarda la funzione insertAdjacentHTML, metodo non standard di casa Microsoft (non è presente in ECMAscript).
Dopo una breve ricerca su google (santo google), ho trovato questa faq, che risolve il problema.
Ecco la soluzione:

if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){

HTMLElement.prototype.insertAdjacentElement =
        function(where,parsedNode)
	{
	   switch (where){
		   case 'beforeBegin':
			   this.parentNode.insertBefore(parsedNode,this)
			   break;
		   case 'afterBegin':
		           this.insertBefore(parsedNode,this.firstChild);
			   break;
		   case 'beforeEnd':
			   this.appendChild(parsedNode);
			   break;
		   case 'afterEnd':
			   if (this.nextSibling)
			       this.parentNode.insertBefore(parsedNode,this.nextSibling);
			   else this.parentNode.appendChild(parsedNode);
			   break;
	  }
	}

     HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
     {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var parsedHTML = r.createContextualFragment(htmlStr);
        this.insertAdjacentElement(where,parsedHTML)
     }

     HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
     {
       var parsedText = document.createTextNode(txtStr)
       this.insertAdjacentElement(where,parsedText)
     }
}

function getObjInnerText(obj){
     if (document.all)
     { // IE;
       return obj.innerText;
     }
     else{
           if (obj.textContent){
	      return obj.textContent;
           }
}

Previsioni del Web 3.0.

Scritto il 22-06-2007 da Vito Antonio Bonardi

Pubblicato su : Technology

3


[via MF]