Non ho ben capito cosa intendi. Il codice che ho messo fa parte del codice HTML del mio blog su Blogger: non c'è una serie di pagine da modificare ma una pagina unica di codice, ed è Blogger che di volta in volta si preoccupa di capire quale pagina viene caricata e cosa metterci.
Nella pagina di codice di Blogger c'è scritto (è quello di prima ancor più semplificato):
codice:
<b:loop values='data:post.comments' var='comment'>
<dd class='comment-body>
<data:comment.body/>
</dd>
</b:loop>
che sono le righe che servono per caricare i commenti ad un post.
Io non ho idea di dove stiano i commenti e cosa contengono oppure quali siano i valori della variabile «comment» che viene usata per effettuare il loop: quando qualcuno si collega ad una pagina del mio blog è Blogger che di volta in volta sa quale pagina viene richiesta e va a prendere i commenti di quella pagina. I commenti io non li vedo, non so dove stanno, posso solo richiamarli: con il comando che ho scritto vengono stampati, io volevo usarli come stringhe in uno script che sostituisca le emoticon con i corrispondenti smiley (programmino che anche io arrivo a scrivere, basta usare i replace e document.write).
Esiste un altro script che fa questa cosa ma non lavorando direttamente sulle stringhe, bensì lavorando con il DOM (almeno credo, che conosco ben poco la materia).
Agisce quando la pagina è caricata completamente e mantiene inalterato il codice HTML sorgente della pagina, però a schermo al posto delle emoticon fa comparire gli smiley:
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 = [];
var i=0;
var def = ['NOME_DELLA_CLASSE_CUI_APPLICARE_QUESTO_SCRIPT' , 'NOME_ALTRA_CLASSE_CUI_APPLICARLO', ....];
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(/:-?\)/g, '
');
d[i].innerHTML = d[i].innerHTML.replace(/:-?\(/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();
});
Tu mi dirai: e usa questo codice, allora.
Il fatto è che funzionare, funziona, ma mi fa casini con le espressioni che sono contenute nei tag (sostituisce anche quelle e alcuni tag mi vanno a ramengo): io questo codice non sono riuscito a capire bene come lavora, quindi non so come modificarlo per farglieli evitare, cioè per fargli fare le sostituzioni solo delle espressioni che non sono tra parentesi uncinate.
Esempio per farmi capire: per funzionare bene dovrebbe sostituire "abc" con "xyz", ma solo e unicamente se "abc" non è contenuto in un tag:
abcdef ghi <huskd abcgjeu> jsdoi abc kdhui
dovrebbe diventare
xyzdef ghi <huskd abcgjeu> jsdoi xyz kdhui
e non
xyzdef ghi <huskd xyzgjeu> jsdoi xyz kdhui
Qualche suggerimento? Qualche anima pia può spiegarmi come funziona il codice che ho messo così che posso aggiustarlo e/o suggerirmi direttamente come modificarlo?