venerdì, aprile 21, 2006

standardizzare setAttribute on IE

setAttribute lavora in maniera strana su IE,
fà quello che deve fare, ovvero cambiare dei valori di alcune proprietà,
ma essendo che vengono modificate le proprietà di un oggetto JScript,
alcune parole come class, for hanno un nome diverso..

dopo aver letto l'articolo su delete.me.uk
ho deciso di utilizzare il metodo ben spiegato per risolvere
i problemi su class,for e style e l'associazione di eventi on...

ho usato un commento condizionale, includendo il codice sotto riportato si ottiene un setAttribute piu' standard.

/*@cc_on
Element = function () {};

Element.prototype.getAttribute = function (attribute) {
if (attribute == "class") attribute = "className";
if (attribute == "for") attribute = "htmlFor";
if (attribute == "style") return this.style.cssText;
else return this[attribute];
}

Element.prototype.setAttribute = function (attribute, value) {
if (attribute == "class") attribute = "className";
if (attribute == "for") attribute = "htmlFor";
if (attribute == "style") this.style.cssText =value;
else
if(value.indexOf("on")!=0)
this[attribute] = function(){eval(value)};
else
this[attribute] = value;
}
var __IEcreateElement = document.createElement;

document.createElement = function (tagName) {

var element = __IEcreateElement(tagName);

element.getAttribute=interface.getAttribute;
element.setAttribute=interface.setAttribute;

return element;
}
var interface = new Element;
onload=function(){
var list=document.all;
var max=list.length;

while(--max)
{
list[max].getAttribute=interface.getAttribute;
list[max].setAttribute=interface.setAttribute;

}
}
@*/
naturalmente per aggiungere un evento nell'onload dovrete poi usare una funzione del genere:

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof oldonload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}

4 commenti:

makss83 ha detto...

scusa l'introduzione poco "informatica" ma sei da Treviso, Carlesso di cognome..ed esperto di informatica..nn sei mica il cugino dei gemelli Carlesso????

kentaromiura ha detto...

no, ma conosco Pg aka Rey9999, e dovrei essere lontano parente dei cugini calciatori.
bye!

QPC ha detto...

ciao karl.... maledetto non sei neanche venuto a trovarmi venere sera.......

Anonimo ha detto...

Ieri sera mi hai soddisfatto in pieno
Sei fantastico

by Grande Mulo