In un sito Joomla 1.5.2 su cui sto lavorando è impossibile accedere con Internet Explorer alla homepage dopo il login. Il browser restituisce l'errore "Impossibile aprire il sito. Operazione terminata" e chiude la connessione.
Il problema sembra essere un baco che IE si porta dietro dalla versione 5.5 e che il buon Roberto Cancelli della PiccoloMoscio non si è mai preoccupato di risolvere.Purtroppo in alcune particolari condizioni il codice di Joomla incappa in questo bug e rende impossibile la navigazione all'interno del sito.

Vediamo insieme come risolvere.

 

Il problema consiste in una anomalia della gestione delle chiamate DOM, in pratica IE non si preoccupa minimamente di controllare le chiamate DOMReady, quindi tali chiamate vengono eseguite istantaneamente.
In pratica se dobbiamo lanciare uno script il prima possibile, senza attendere il caricamento completo di tutti gli oggetti della pagina dovremmo sostituire la chiamata window.onload() con window.addEvent(’domready’).
In questo modo potremmo, ad esempio, lanciare un menù java senza attendere il completo caricamento di tutte le immagini in una homepage, cosa molto utile specie se si usa una connessione non proprio velocissima.

Joomla in questo modo carica Mootools, un framework javascript per abilitare gli effetti Web 2.0.

Come dicevo prima IE non ha un controllo delle chiamate DOM, quindi se si cerca di eseguire una chiamata che modifica un tag prima che esso sia chiuso, IE se la prende male e e non ci parla più, impedendoci di vedere il sito che desideriamo navigare.

Sull'articolo KB927917 Microsoft spiega la causa di questo problema con uno scioglilingua:

Questo problema si verifica perché un elemento contenitore di figlio HTML contiene il codice di script che si tenta che modifica l'elemento contenitore di padre dei figli contenitori. Si tenta il codice di script che modifica l'elemento contenitore di padre utilizzando il metodo innerHTML o il metodo appendChild.

Comunque il consiglio che da è di non inserire codice JS che modifichi un tag fino a quando lo stesso tag non è stato chiuso.

Ok, chi spiega a Microsoft che se sto usando un CMS complesso come Joomla non posso riscrivermi centinaia di pagine di codice?
 

Quattro Racconti


La mia prima opera narrativa, quattro storie brevi, i miei quattro Re, quattro racconti di fantasia, con forti tinte horror, per aiutarvi a non dormire...

  • Se hanno ragione le religioni animiste, ogni oggetto ha una sua identità, una sua anima. E se gli oggetti in questione avessero un'indole maligna?

  • Siamo sicuri di voler affidare il nostro futuro all'intelligenza artificiale? Abbiamo la certezza che un giudizio assolutamente oggettivo e privo di vizi possa guidare la nostra specie verso tempi di pace e prosperità?
    Possiamo fidarci delle cure amorevoli di una fredda macchina??

  • Una vita sfortunata, una serie di rimpianti che negli anni si accumulano, stratificano. Può la disperazione, per quanto intensa e profonda, prendere forma e divorarci dall'interno? Divenire un compagno di vita, tangibile, al nostro fianco mentre camminiamo, sul nostro grembo mentre siamo seduti, come un animale da compagnia??
  • Tra i bisogni primordiali, la necessità di assumere cibo è forse quello che più a contribuito alla nostra evoluzione.
    Quello che più fortemente ci spinge, ci motiva, ci dispera.
    La scarsità di cibo ci ha spinto in ogni angolo del mondo in cerca di terre fertili da coltivare, ha spinto la nostra intelligenza a crescere per poter trovare nuovi modi e tecnologie per rendere i campi più produttivi, ha spinto l'evoluzione delle strutture sociali grazie agli scambi economici tra villaggi e nazioni, ci ha fatto progredire.
    Ma spinge anche i nostri istinti più animaleschi.
    Un animale affamato è una belva sanguinaria e spietata.
    Ed un animale affamato ed intelligente come un essere umano è capace di tutto....
     
     

Quattro Racconti - Storie brevi per non dormire

ISBN Libro:9788892305083

Anno pubblicazione:2023

Formato:11,4x17,2

Foliazione:144

Copertina:morbida

Interno:bn

Genere: Narrativa / Letterature - horror

Distribuzione:

IlMioLibro Self Pubblishing

Amazon

laFeltrinelli

IBS

 

 


A questo punto dovremmo trovare una soluzione alternativa.

Purtroppo per chi usa IE l'unico modo per far funzionare un DOM è attendere il completo caricamento della pagina e di tutti i suoi oggetti.

Negli Headers della homepage di Joomla possiamo trovare, poco sopra la chiusura dell'headers stesso:


window.addEvent('domready', function(){ var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false}); })

Dovremmo sostituire questa stringa con

var load_method = (window.ie ? 'load' : 'domready');
window.addEvent(load_method, function(){ var JTooltips = new Tips($$('.hasTip'), { maxTitleChars: 50, fixed: false}); });


Ovvero, controlla se il browser è IE, se si allora esegui il domready al caricamento della pagina.

Non è una cosa piacevole per quanti usano Internet Explorer, navigano su siti con molte immagini ed hanno una connessione lenta, ma che dire...
Forse è il caso di passare ad altri browser?

Bene, per modificare questa stringa html dobbiamo modificare la funzione che la genera.
Essa si trova nel file /libraries/joomla/html/html/behavoir.php, esattamente alla riga 108 di tale file incluso con la versione 1.5.2 di Joomla, troviamo:

$tooltipInit = ' window.addEvent(\'domready\', function(){ var JTooltips = new Tips($$(\''.$selector.'\'), '.$options.'); });';

Mettiamo un bel // davanti alla riga per commentarla e sostituiamola con
$tooltipInit = ' var load_method = (window.ie ? \'load\' : \'domready\');'
.'window.addEvent(load_method, function()'
.'{ var JTooltips = new Tips($$(\''.$selector.'\'), '.$options.'); });';

Salviamo, cancelliamo la cache di IE e ricarichiamo la homepage, eseguiamo il login e, come per magina, la pagina si apre senza problemi!

La vita è un continuo mettersi in discussione, trovare i propri limiti ed affrontarli, io ogni giorno ne trovo almeno 3 e tutti portano a prodotti Microsoft. Sono contento che esistono tutti questi bachi, altrimenti rischierei di perdere parecchia elasticità mentale!
We use cookies
Attenzione! Questo sito utilizza i cookie tecnici e di terze parti per poter fornire i servizi.