Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    innerHTML e Problemi di visualizzazione cross-browser

    Mi sono imbattuto in uno strano problema di visualizzazione di un div creato tramite javascript, volevo sapere se qualcuno ne conosce la causa e se mi può dare qualche dritta.

    Quello che posterò è solo un esempio-giocattolo che ha il sol oscopo di riassumere il problema.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    <script language="javascript">
    function draw()
    {
    element = document.getElementById("cont-sx");
    element.innerHTML = '<div id = "prova">';
    element.innerHTML += 'bla bla bla';
    element.innerHTML += '</div>';
    }
    </script>
    <style type="text/css">
    #prova
    {
    border-style:solid;
    border-color:#CC33CC;
    border-width:1px;
    background-color:#99FF33;
    }
    </style>
    </head>

    <body onload="draw()">
    <div id="cont-sx">
    </div>
    </body>
    </html>
    Il problema è che nei browser IE e Mozilla Firefox la parte di testo (bla bla bla) viene disegnata fuori dal div e non dentro.
    In Opera il tutto è visualizzato correttamente.
    La cosa curiosa è che se il Div lo creo con un'unica istruzione esso verrà visualizzato correttamente in tutti e tre i browser.
    element = document.getElementById("cont-sx");
    element.innerHTML = '<div id = "prova">bla bla bla</div>';
    Allego un'immagine per spiegare meglio:
    http://e.imagehost.org/view/0007/problema

  2. #2
    Risolto creando una stringa e poi scrivendo l'innerHTML in una sola passata (che è meglio).
    Mi rimane il dubbio sul perchè non vada nell'altro modo ma non importa.

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    quella che secondo te e' una concatenazione immediata non lo e' per il browser
    che fondamentalmente ha ragione: scrive tre cose in tre "momenti" diversi,
    cose che prese singolarmente producono quel risultato nel tentativo di mantenere l' alberatura il piu' corretta possibile
    - un div senza chiusura, che si preoccupa di chiudere immediatamente
    - testo
    - una chiusura di div senza apertura, che elimina senza pensarci due volte...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.