Problema : “impossibile aprire sito …” Internet Explorer 8 questa pagina contiene errori (KB927917)

Il messaggio d’errore riporta un dato molto importante e cioè, la dicitura KB927917. Questa è la codifica ufficiale Microsoft (Knowledge Base, ndr.) per i problemi noti ed eventualmente per le soluzioni. Ciò significa che basta per lo meno fare una ricerca su Google per recuperare tutto ciò che di noto c’è in rete. Inoltre ci fa comprendere che si tratta di un’anomalia che riguarda solo IE; ed infatti, su altri tipi di browser non sembrano esserci problemi.
Il problema si verifica quando:
- Il file HTML è in via di parserizzazione;
- Uno JavaScript è in esecuzione e tenta di modificare il codice HTML utilizzando DOM;
- Lo script tenta di aggiungere o rimuovere un elemento contentuto in un TAG non ancora chiuso.
Se il parser del browser sta analizzando la pagina ed uno JavaScript sta modificando un TAG contenuto all’interno di un altro di cui il parser non ha ancora incontrato la chiusura all’interno del codice; in questa condizione si verifica il problema.
Il seguente codice genera l’errore a cui ci riferiamo:
- <html>
- <body>
- <div>
- <script type=“text/javascript”>
- var newElem = document.createElement(‘foo’);
- document.body.appendChild(newElem);
- </script>
- </div>
- </body>
- </html>
Individuata la natura del problema, possiamo correre ai ripari. Ci sono, infatti, almeno 4 possibili soluzioni a cui possiamo ricorrere.
1.
Eseguiamo lo script solo dopo che il parser ha terminato il suo lavoro. Lo si può fare inserendo il codice all’interno di una funzione JavaScript che poi faremo eseguire dall’evento window.onload che viene evocato quando il parser termina il suo compito.
2.
Aggiungiamo l’attributo defer=”defer” al tag JavaScript come nell’esempio seguente:
- <script defer=“defer” type=“text/javascript”>
- var newElem = document.createElement(‘foo’);
- document.body.appendChild(newElem);
- </script>
Questo mette in stand-by il codice fintanto che il parser non ha terminato il suo lavoro.
3.
Evitiamo di fare modifiche ad elementi HTML molto nidificati.
4.
Spostiamo lo JavaScript che è causa del problema, alla fine della nostra pagina HTML, subito prima del TAG </body>.
5.
Eliminare il Javascript che causa l’errore.
Nel mio caso il problema era dato dallo script di collegamento alle API di Facebook, in quanto veniva generato un errore
[...] leave a comment » L’integrazione del fan box della propria pagina di Facebook puo’ essere fatta tramite javascript o iframe. Con explorer 8 l’intgrazione tramite javascript porta ad un errore di apertura della pagina, rendendo il sito inaccessibile (il problema puo’ essere generato da qualsiasi script inserito in maniera anomala nelle div com…). [...]
Integrare riquadro fan box facebook nel proprio sito tramite iframe « Stracciafabrizio’s Weblog
March 16, 2010 at 5:41 pm
Ciao, non riesco a risolvere l’errore molto fastidioso che mi si è presentato. “Unable to modify the parent container element before the child element is closed (KB927917)”
non capisco come risolvere il problema.
come posso fare? grazie in anticpo
mirko
mirko
April 15, 2011 at 7:58 pm
Ciao Mirko
le cause di questo problema possono essere differenti. Di solito è dovuto ad un’errata chiusura dei tag
Prova a controllare se hai inserito del codice javascript, dove lo inserisci.
Se non va prova a postare il codice della pagina e proviamo a risolvere.
Saluti
stracciafabrizio
April 16, 2011 at 9:28 am
Grazie mille ho risolto sul mio sito spostando gli script del pulsanti di Twitter e +1 di Google nel footer.
Gadget & Elettronica (@subitotechs)
November 12, 2011 at 9:31 pm