Non credevo di dover arrivare a tanto, nel senso che non volevo far perder più che tanto tempo, comunque eccolo:
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 addSmiley(dummy){
var d = [], i=0, def = ['post-body','comment-body'];
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(var i=0;i<d.length;i++){
d[i].innerHTML = d[i].innerHTML.replace(/\s<:d>/g, '
');
d[i].innerHTML = d[i].innerHTML.replace(/\s:-?>)/g, '
');
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
addLoadEvent(function(){
addSmiley();
});
Se nel replace uso altri simboli funziona, ma quando uso < e >, con o senza backslash, non mi funziona più niente e non sostituisce neanche gli altri insiemi di simboli, quelli senza < e >.