Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 13 di 30
  • livello principiante
Indice lezioni

accorgimenti nella dichiarazione e nel passaggio di stringhe

Una pagina multi - oggetto è composta da un albero gerarchico di videate
Una pagina multi - oggetto è composta da un albero gerarchico di videate
Link copiato negli appunti

Sia nei linguaggi di mark - up che nel codice Javascript può essere necessario usare dei caratteri di "escape". Ad esempio le seguenti dichiarazioni iniziali genereranno un errore:

<input type="hidden" value="<xml titolo="titolo">ciao</xml>"

var testo = "<xml titolo="titolo">ciao</xml>"

Nel primo caso ci troviamo in ambiente HTML: il browser non riesce ad interpretare correttamente la sequenza degli apici e concluderà la stringa dopo titolo=; l'errore non è bloccante, ma i doppi apici vanno sostituiti con apici semplici. Ecco la versione corretta:

<input type="hidden" value="< xml titolo='titolo'> ciao</xml>"

Nel secondo caso ci troviamo in ambiente Javascript: il compilatore non riesce ad interpretare correttamente la sequenza di doppi apici e si blocca; è sufficiente anteporre agli apici il carattere di escape :

var testo = "<xml titolo="titolo">ciao</xml>"

Questi errori possono accadere solamente nelle stringhe iniziali, cioè quelle che effettivamente appaiono "scritte": le stringhe registrate in memoria non hanno alcuna limitazione riguardo ai caratteri. Perciò sono due le situazioni a rischio di errore:

  • nel codice scritto a mano: è sufficiente ricordarsi di aggiungere i caratteri di escape;
  • nel codice generato dallo script (ad esempio per il parametro del metodo window.open): servono delle funzioni che in automatico aggiungano gli escape al testo scritto e poi li levino nelle variabili.

Di seguito potete trovare due funzioni Javascript: la prima gestisce il mark - up, la seconda i doppi apici. Ad entrambe corrisponderà una contro - funzione che annulla l'effetto.

  function detag (text)
     {
    var a, b, c;
    while (true)
     {
    a = text.indexOf("<");
    b = text.substring(0,a);
    c = text.substring(a + 1, text.length)
     if (a== -1) break;
     text = b + "<" + c
     }
     while (true)
     {
     a = text.indexOf(">");
     b = text.substring(0,a);
     c = text.substring(a + 1, text.length)
     if (a== -1) break;
     text = b + ">" + c
     }
   this.buffer = text
   }

  function deapix (text)
     {
     var a, b, c;
     while (true)
     {
    a = text.indexOf(""");
    b = text.substring(0,a);
    c = text.substring(a + 1, text.length)
     if (a== -1) break;
     text = b + "'" + c
     }
  this.buffer = text
   }

Ti consigliamo anche