Leggere un valore generato da un codice HTML/JavaScript

Da Gambas-it.org - Wikipedia.

Poiché attualmente non è possibile salvare un file di testo mediante il protocollo JavaScript [nota 1], al fine, dunque, di leggere da un programma Gambas un valore dal processamento del codice HTML, ci serviremo del metodo document.write() del protocollo JavaScript che scrive una stringa direttamente nella pagina web (ossia, nel nostro caso, nella WebView). Quanto scritto nella WebView sarà raccolto dalla sua proprietà .Text [nota 2], che mostra il testo scevro dal codice html.

Mostriamo per questo caso un esempio, nel quale il programma Gambas imposta il codice JavaScript essenziale per generare una finestra Prompt (simile all'InputBox di Gambas), nella quale si inserisce manualmente un testo alfanumerico che sarà passato all'HTML. Il codice JavaScript provvederà a modificare il valore ricevuto, e quindi a scrivere nell'oggetto WebView il valore modificato secondo il codice JavaScript. In ultimo, il codice Gambas mostrerà il risultato finale.

Non è necessario che l'Oggetto WebView sia visibile, o sia comunque effettivamente presente sul Form, è sufficiente che sia inizializzato e che sia assegnato al Metodo ".SetHtml()" del WebView il codice JavaScript, sopra descritto.
Pertanto nel codice Gambas si potrà anche impostare l'oggetto WebView anche solo così:

Private WebView1 As WebView


Public Sub Form_Open()

 With WebView1 = New WebView(Me)
' Carica il codice JavaScript:
   .SetHtml("<HTML><HEAD><SCRIPT>\n" &
            "var p = prompt('Inserisci il dato:');\n" &
            "// Modifichiamo il dato aggiungendovi semplicemente del testo:\n" &
            "var b = p + ' qualsiasi testo';\n" &
            "// Scrive il dato nella WebView:\n" &
            "document.write(b);\n" &
            "</script></head></html>")
 End With

End


Public Sub Button1_Click()

' Viene mostrato il testo inserito nel prompt e successivamente modificato con il codice html/javascript:
  Print "Testo inserito: "; Scan(WebView1.GetHtml(), "*<body>*<*")[1]

End

Usando una porzione di codice HTML e di JavaScript

Vediamo ora due casi in cui il programma Gambas si serve di una porzione di codice HTML e JavaScript per ricevere da questo una valore di tipo stringa. Nel codice HTML è presente una funzione, dalla quale si ottiene un valore. Il codice Gambas può raccogliere il valore ottenuto da quella funzione mediante questa modalità.

Esempio senza file esterno .js

Nel primo esempio non ci serviremo di un file esterno .js, ma la gestione del valore da passare si svolgerà tutta nel codice HTML. Quanto scritto nella WebView sarà mostrato in una TextEdit.

Il codice HTML, contenuto all'interno di un file HTML e posto nella cartella Dati del progetto, è il seguente:

<html>
 
   <script language="JavaScript">

//viene svolta la funzione:
   function calcolo(){
     var a
     a = 7 * 5
       
//viene scritto nella pagina (nel nostro caso nella "WebView") il contenuto della variabile "a":
     document.write(a);

   }

   </script>
  <body>

     <input type="button" onclick="calcolo()" value="Calcola">

  </body></nowiki>
</html></nowiki>


Esempio con un file .js esterno

In questo secondo esempio faremo uso, come nell'esempio del primo paragrafo, di un file .js (o altro semplice file di testo) esterno, il quale questa volta avrà un codice fisso.

Il file .js sarà richiamato da un file ".html", il codice del quale sarà il seguente:

<HTML>

 <SCRIPT type="text/JavaScript">

 
// Dichiara ed istanzia una variabile che sarà utilizzata anche nel file ".js":
   var c = 2

 
</script>

 <SCRIPT src="/percorso/del/file.js"></script>

 <SCRIPT>

 
   var a = 2

  document.write( a + b)


 </script>

</html>

Invece, il codice fisso nel file .js è il seguente:

  window.alert("Il valore della variabile 'c' e': " + c)

// Utilizziamo anche la variabile "c" dichiarata ed istanziata nel codice HTML principale:
  var b = 10 * c

Il codice Gambas

Nel codice Gambas si utilizzerà il Metodo ".SetHtml()" della Classe WebView, al quale andrà passato, come argomento, il codice contenuto nel file html

Private WebView1 As WebView


Public Sub Form_Open()

  With WebView1 = New WebView(Me)
' Carica il contenuto del file html:
    .SetHtml(File.Load("/percorso/del/file.html"))
  End With

End


Public Sub Button1_Click()

' Legge anche quanto scritto dal Metodo "document.write()" del codice "JavaScript":
 WebView1.GetHtml()

End


Note

[1] Il salvataggio di un file di testo mediante il protocollo JavaScript è possibile se nel proprio sistema è presente la risorsa GeckoActiveXObject.