Innanzi tutto scusate per il titolo generico, ma non sapevo come formulare la richiesta in poche parole.
Io uso un programmino che sostituisce, nella classe "smiley", gli emoticon con la gif dello smiley corrispondente e che cancella automaticamente quello che viene scritto nella classe "spam". Per non creare conflitti con altri script ho anche usato la funzione addLoadEvent.
Il problema è che funziona bene con tutti i browser tranne IE, che ci mette minuti a caricare, si pianta, va in crash, di tutto di più.
Qualcuno per favore ha la pazienza di leggerlo e dirmi cosa sbaglio e cosa devo cambiare?
Il programma è questo, caricato come <script type='text/javascript' src="URL/commenti.js" /> nella pagina del mio blog:
codice:
document.getElementsByClassName = function(clsName) {
var retVal = new Array();
var elements = document.getElementsByTagName('*');
for (var i = 0 ; i < elements.length ; i++) {
if (elements[i].className.indexOf(' ') >= 0) {
var classes = elements[i].className.split(' ');
for(var j = 0;j < classes.length;j++){
if(classes[j] == clsName)
retVal.push(elements[i]);
}
}
else if (elements[i].className == clsName)
retVal.push(elements[i]);
}
return retVal;
}
function gest_spam() {
var b = [];
var i=0;
var cla = ['spam'];
for (i=0 ; i<cla.length ; i++) {
var content = document.getElementsByClassName(cla[i]);
for (var k=0 ; k<content.length ; k++)
b.push(content[k]);
}
for (i=0 ; i<arguments.length ; i++) {
var content = document.getElementsByClassName(arguments[i]);
for (var n=0 ; n<content.length ; n++)
b.push(content[n]);
}
for (i=0 ; i<b.length ; i++) {
b[i].innerHTML = b[i].innerHTML.replace(/.+/ig, '');
}
}
function gest_emoticon() {
var d = [];
var i=0;
var def = ['smiley'];
for (i=0 ; i<def.length ; i++) {
var content = document.getElementsByClassName(def[i]);
for (var j=0 ; j<content.length ; j++)
d.push(content[j]);
}
for (i=0 ; i<arguments.length ; i++) {
var content = document.getElementsByClassName(arguments[i]);
for (var m=0 ; m<content.length ; m++)
d.push(content[m]);
}
for (i=0 ; i<d.length ; i++) {
d[i].innerHTML = d[i].innerHTML.replace(/:-?\)/g, ' [img]URL_GIF_1[/img] ');
d[i].innerHTML = d[i].innerHTML.replace(/:-?\(/g, ' [img]URL_GIF_2[/img] ');
.........
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
if (oldonload) oldonload();
func();
}
}
}
addLoadEvent (gest_emoticon);
addLoadEvent (gest_spam);