Stracciafabrizio’s Weblog

Just another WordPress.com weblog

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

with 4 comments

Quante volte vi è capitato di navigare per la rete con Internet Explorer 7 (o la 8 per chi avesse questo “privilegio”) e di scontrarvi con un finestrella di dialogo di windows che vi dice “Internet Explorer non può aprire il sito Internet” (o in inglese “Internet Explorer cannot open the Internet site”).
IE 7 non offre molte informazioni sulla natura del problema, anche a causa del suo pessimo sistema di debugging. Qualcosa di molto più utile è stato fatto con IE 8, ed è proprio grazie a quest’ultimo che si è riusciti ad individuare la natura, nonché la soluzione al problema.
Con IE 8 l’errore indicato è il seguente:
Webpage Script Errors
User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.0.04506)
Timestamp: Fri, 18 Jul 2008 16:19:19 UTC
Message: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
Line: 0
Char: 0
Code: 0

Il messaggio d’errore riporta un dato molto importante e cioè, la dicitura . 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:

  1. Il file HTML è in via di ;
  2. Uno JavaScript è in esecuzione e tenta di modificare il codice HTML utilizzando DOM;
  3. 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:

  1. <html>
  2. <body>
  3. <div>
  4. <script type=“text/javascript”>
  5. var newElem = document.createElement(‘foo’);
  6. document.body.appendChild(newElem);
  7. </script>
  8. </div>
  9. </body>
  10. </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:

  1. <script defer=“defer” type=“text/javascript”>
  2. var newElem = document.createElement(‘foo’);
  3. document.body.appendChild(newElem);
  4. </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

Written by stracciafabrizio

March 9, 2010 at 2:57 pm

4 Responses

Subscribe to comments with RSS.

  1. […] 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…). […]

  2. 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

      con all’interno del codice javascript. Il problema si presenta spesso quando hai molte div nidificate tra loro.
      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

  3. Grazie mille ho risolto sul mio sito spostando gli script del pulsanti di Twitter e +1 di Google nel footer.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: