23 gennaio, 2012

Come visualizzare i commenti nidificati di Blogger anche su Internet Explorer e con Scriptaculous e Prototype.

I commenti nidificati recentemente introdotti da Blogger presentano tuttora delle incompatibilità. La più grave riguarda alcuni modelli e Internet Explorer. In taluni casi, dopo l'introduzione delle risposte ai commenti, con la procedura di sostituzione di una riga di codice, se si apre un post con Internet Explorer si vede una semplice pagina bianca mentre in altri blog c'è un blocco dello scorrimento. Nel senso che non si può operare sul cursore posto sulla destra per visualizzare interamente la pagina e la schermata non risponde alle azioni del mouse.

Simple Blogger Tutorial ha trovato la soluzione a questo problema che funziona con tutti i modelli testati e con Internet Explorer 9 mentre con Internet Explorer 8 ci sono ancora dei template in cui possono sussistere dei problemi. La soluzione proposta è concettualmente molto semplice. Nel codice piuttosto corposo dei nuovi commenti di Blogger c'è l'attributo defer che indica al browser di rinviare l'esecuzione dello script a quando la pagina non sia stata tutta caricata. Ci sono tre modalità di chiamata dello script: normal, deferred e asynchronous.

Una semplice sostituzione di defer con async, che invece fa caricare lo script in modo asincrono, sembra che risolva gran parte dei problemi legati alla visualizzazione con IE. Ho testato su un mio blog di prova e in effetti si apre regolarmente con IE8 e IE9 mentre prima il mouse non rispondeva a nessun comando. Scendendo nel dettaglio occorre andare su Modello > Backup/Ripristino e salvare il modello completo per un eventuale backup di sicurezza. Si torna su Modello > Modifica HTML > Procedi e si espandono i modelli widget. Si cerca la riga

<script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/>

e si sostituisce con quest'altra

<script async='async' expr:src='data:post.commentSrc' type='text/javascript'/>

Se avete un modello personalizzato può darsi che la riga sia questa

&lt;script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/&gt;

che in questo caso deve sostituirsi con la seguente

&lt;script async='async' expr:src='data:post.commentSrc' type='text/javascript'/&gt;

che può essere anche una alternativa alla prima riga nel caso il modello non salvasse la modifica. Si tratta infatti sempre dello stesso codice ma convertito nel linguaggio del modello di Blogger. Nel caso in cui nel vostro template abbiate installato la libreria Scriptaculous e Prototype mediante uno script come questo

<script src='http://www.google.com/jsapi'/>
<script>
google.load(&quot;prototype&quot;,&quot;1.6.0.3&quot;);
google.load(&quot;scriptaculous&quot;, &quot;1.8.2&quot;);
</script>

incollato subito sopra alla riga </head>, occorre invece modificarlo in questo modo

<script src='http://www.google.com/jsapi' type='text/javascript'/>
<script type='text/javascript'>
google.load(&quot;prototype&quot;, &quot;1&quot;);
window.JSON = {
parse: function (st) { return st.evalJSON(); },
stringify: function(obj) { return Object.toJSON(obj); }
};
google.load(&quot;scriptaculous&quot;, &quot;1&quot;);
</script>

per non farlo andare in conflitto con i nuovi commenti nidificati. Questo metodo funziona anche quando non si riesce a vedere il widget di Google Friend Connect se abbiamo installato anche Scriptaculous e Prototype come trovato su una discussione ormai archiviata del Forum di Google Friend Connect. Al posto dei numeri in rosso si può inserire quelli della versione più aggiornata dello script così come illustrato per JQuery



12 commenti:

  1. Ciao, io uso Chrome e non riesco a rispondere ai commenti del mio blog. C'è il tasto rispondi, ma se clicco non succede niente! Il modello è Awesome Inc. Posso fare qualcosa per ovviare a questo problema?

    RispondiElimina
  2. @BigMakeupBag
    Segui le istruzioni di questo post perché alcuni modelli hanno dei problemi anche con Chrome. Può darsi però che dipenda da altra causa ma tentare non nuoce. Salva il modello.

    RispondiElimina
  3. Nel mio modello è già così...
    script async='async' expr:src='data:post.commentSrc' type='text/javascript'/
    Ma non funziona lo stesso.
    Comincia a essere un vero mistero!

    RispondiElimina
  4. Potente Ernesto. Tornato come te alla vecchia struttura dei commenti, perché la nuova dava noie su vari browser (e perché il riquadro colorato per i miei commenti piaceva ai follower), mi sono ritrovato da ieri sera con un poco gradito regalo di blogger: commenti con font minuscola, pur non avendo toccato nulla. Ho provato a modificare la grandezza della font e la spaziatura seguendo i tuoi consigli (post sullo stile nei commenti: la variabile non c'era nel modello e l'ho aggiunta), ma niente, non cambia nulla. Se non è chiedere troppo, mi daresti qualche dritta su come agire su font e spaziatura? Grazie mille.

    RispondiElimina
  5. Se hai commentato avrai visto che anch'io ho lo stesso problema. L'ho affrontero nei prossimi giorni

    RispondiElimina
  6. Me ne sono accorto solo ora, sorry. E dagli avatar, perché la font nei tuoi commenti è comunque maggiore.
    Aspetto dunque il nuovo post. E, come sempre, grazie.

    RispondiElimina
  7. Ho lo stesso problema con i commenti nidificati. Tutte le personalizzazioni che avevo fatto sono sparite e il carattere è schiacciato e poco leggibile XD

    RispondiElimina
  8. @Acalia
    vedremo quello che si può fare

    RispondiElimina
  9. Allora... Io ho già la scritta così

    script async='async' expr:src='data:post.commentSrc' type='text/javascript'/

    ma su IE9 non funge. Ho problemi anche con Chrome mentre su Firefix vedo tutto benissimo.

    Sono andata in giro per blog finché non ne ho trovato uno in cui il pulsante della reply è perfettamente funzionante in tutti i browser quindi vuol dire che c'è qualcosa a monte che non va.

    Ho pensato che potrebbe essere qualche altro script presente nel mio blog a causare il problema ma non saprei proprio quale.

    Il link al blog sul quale funge tutto è questo http://libbytravoi.blogspot.com/

    Io non ci capisco molto ma magari dalla sorgente si riesce a risalire allo script e a come agisce...

    RispondiElimina
  10. @Shaina
    Non si può vedere molto dal sorgente pagina. Se hai già il caricamento asincrono vuol dire che quelli di Blogger ci hanno pensato pure loro ma che non hanno ancora risolto. Purtroppo non possiamo fare altro che aspettare

    RispondiElimina
  11. Ciao, io ho il problema di tutti e se clicco sul tasto rispondi, con qualsiasi browser, non succede nulla.
    Vorrei seguire i consigli di questa pagina, ma con f3 e inserendo le righe da sostituire, non risultano esserci.
    Cosa sbaglio?

    il mio blog è http://lacenanellafrateria.blogspot.com

    RispondiElimina
  12. @frà Simone
    E' probabile che non sbagli nulla. Abbi un po' di pazienza e riprendi la cosa in mano quando il team di Blogger avrà assestato il codice dei commenti nidificati. Negli ultimi 15 giorni lo hanno cambiato un giorno sì e l'altro pure quindi capisci che in queste condizioni anche scrivere un tutorial è inutile perché il post diventa obsoleto in un paio di giorni.

    RispondiElimina