Differenze tra le versioni di "Leggere un valore generato da un codice HTML/JavaScript"

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Poiché attualmente non è possibile salvare un file di testo mediante il protocollo ''JavaScript'' <SUP>&#91;[[#Note|nota 1]]&#93;</sup>, 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à ''<FONT color=#B22222>.Text</font>'' <SUP>&#91;[[#Note|nota 2]]&#93;</sup>, che mostra il testo scevro dal codice html. E', dunque, necessario attivare il componente ''gb.qt4.webkit'' o ''gb.qt5.webkit'' e porre o comunque creare sul ''Form'' una ''WebView''.
+
Poiché attualmente non è possibile salvare un file di testo mediante il protocollo ''JavaScript'' <SUP>&#91;[[#Note|nota 1]]&#93;</sup>, 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à ''<FONT color=#B22222>.Text</font>'' <SUP>&#91;[[#Note|nota 2]]&#93;</sup>, 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'<I>InputBox</i> 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.
  
Mostriamo per questo caso un esempio, nel quale il programma Gambas richiama un file ''html'', contenente il codice ''JavaScript'' essenziale per generare una finestra ''Prompt'' (simile all'<I>InputBox</i> di Gambas), nella quale si inserisce manualmente un valore che sarà passato  all'HTML. Il codice ''JavaScript'', presente nel predetto file ''html'', 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 in una 'TextEdit''.
+
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.
 
+
<BR>Pertanto nel codice Gambas si potrà anche impostare l'oggetto ''WebView'' anche solo così:
Il codice ''html'' può essere, ad esempio, il seguente:
+
  Private WebView1 As WebView
&lt;HTML>
 
 
 
  &lt;HEAD>
 
   
 
  &lt;SCRIPT>
 
 
    var p = prompt('Inserisci il dato:');
 
   
 
<FONT color=blue>// Modifichiamo il dato aggiungendovi semplicemente del testo:</font>
 
    var b = p + ' qualsiasi testo';
 
 
   
 
   
<FONT color=blue>// Scrive il dato nella ''WebView'':</font>
 
    document.write(b);
 
 
   
 
   
  &lt;/script>
+
Public Sub Form_Open()
 
   
 
   
   &lt;/head>
+
   With WebView1 = New WebView(Me)
 +
<FONT color=gray>' ''Carica il codice JavaScript:''</font>
 +
    .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
 
   
 
   
&lt;/html>
 
 
Non è necessario che l'oggetto ''WebView'' sia visibile, o sia comunque effettivamente presente sul ''Form'', è sufficiente che sia inizializzato e che sia impostata la sua proprietà ''.Url'' con l'indirizzo del file ''html''. Pertanto nel codice Gambas si potrà anche impostare l'oggetto ''WebView'' anche solo  così:
 
Private wv As WebView
 
 
   
 
   
 +
Public Sub Button1_Click()
 
   
 
   
  '''Public''' Sub Form_Open()
+
  <FONT color=gray>' ''Viene mostrato il testo inserito nel ''prompt e successivamente modificato con il codice html/javascript:</font>
 +
  Print "Testo inserito: "; Scan(WebView1.GetHtml(), "*<body>*<*")[1]
 
   
 
   
  With wv = New WebView(Me)
+
  End
  <FONT color=gray>' ''Richiamiamo il file html:''</font>
 
    .Url = "<FONT color=gray>''percorso/del/file.html''</font>"
 
  End With
 
 
'''End'''
 
 
 
'''Public''' Sub Button1_Click()
 
 
<FONT color=gray>' ''Nella "TextEdit" sarà mostrato il valore inserito nel ''prompt e successivamente modificato nel file html:</font>
 
    TextEdit1.Text = wv.Text
 
 
'''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à.
 
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à.
  
Riga 55: Riga 38:
  
 
Il codice HTML, contenuto all'interno di un file HTML e posto nella cartella ''Dati'' del progetto, è il seguente:
 
Il codice HTML, contenuto all'interno di un file HTML e posto nella cartella ''Dati'' del progetto, è il seguente:
  <html>
+
  &lt;html>
  <head>
+
 
  </head>
+
     &lt;script language="JavaScript">
 
     <script language="JavaScript">
 
 
   
 
   
 
  <FONT color=blue>//viene svolta la funzione:</font>
 
  <FONT color=blue>//viene svolta la funzione:</font>
Riga 71: Riga 52:
 
     }
 
     }
 
   
 
   
     </script>
+
     &lt;/script>
+
  &lt;body>
<body>
 
 
   
 
   
  <input type="button" onclick="calcolo()" value="Calcola">
+
      &lt;input type="button" onclic&#107;="calcolo&#040;&#041;" value="Calcola"&#062;
 
   
 
   
</body>
+
  &lt;/body></nowiki>
</html>
+
  &lt;/html></nowiki>
 
 
Invece, il codice Gambas è il seguente:
 
'''Public''' Sub Button1_Click()
 
 
  <FONT color=gray>' ''Andiamo a caricare il file html per eseguirlo mediante l'oggetto "WebView":''</font>
 
  WebView1.Url = "<FONT color=gray>''/percorso/del/file.html''</font>"
 
 
 
<FONT color=gray>' ''Utilizziamo la proprietà ".Text" dell'oggetto "WebView", per leggere quanto scritto dal metodo "document.write()" del codice "JavaScript":''</font>
 
    TextEdit1.RichText = WebView1.Text
 
 
'''End'''
 
  
  
 
====Esempio con un file ''.js'' esterno====
 
====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.
 
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:
 
Il file ''.js'' sarà richiamato da un file ".html", il codice del quale sarà il seguente:
Riga 122: Riga 89:
 
   
 
   
 
  </html>
 
  </html>
 
 
 
Invece, il codice fisso nel file ''.js'' è il seguente:
 
Invece, il codice fisso nel file ''.js'' è il seguente:
 
   window.alert("Il valore della variabile 'c' e': " + c)
 
   window.alert("Il valore della variabile 'c' e': " + c)
Riga 130: Riga 95:
 
   var b = 10 * c
 
   var b = 10 * c
  
 
+
====Il codice Gambas====
Il codice Gambas sarà:
+
Nel codice Gambas si utilizzerà il Metodo ".SetHtml()" della Classe ''WebView'', al quale andrà passato, come argomento, il codice contenuto nel file html
  Private wv As WebView
+
  Private WebView1 As WebView
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
   With wv = New WebView(Me)
+
   With WebView1 = New WebView(Me)
  <FONT color=gray>' ''Richiamiamo il file html:''</font>
+
  <FONT color=gray>' ''Carica il contenuto del file html:''</font>
    .Url = "<FONT color=gray>''/percorso/del/file.html''</font>"
+
    .SetHtml(File.Load("<FONT color=darkgreen>''/percorso/del/file.html''</font>"))
 
   End With
 
   End With
 
   
 
   
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
  <FONT color=gray>' ''Utilizziamo la proprietà ".Text" dell'oggetto "WebView", per leggere quanto scritto dal metodo "document.write()" del codice "JavaScript":''</font>
+
  <FONT color=gray>' ''Legge anche quanto scritto dal Metodo "document.write()" del codice "JavaScript":''</font>
    TextEdit1.RichText = wv.Text
+
  WebView1.GetHtml()
 
   
 
   
  '''End'''
+
  End
 
 
  
  
Riga 157: Riga 121:
 
=Note=
 
=Note=
 
[1] Il salvataggio di un file di testo mediante il protocollo ''JavaScript'' è possibile se nel proprio sistema è presente la risorsa ''GeckoActiveXObject''.
 
[1] Il salvataggio di un file di testo mediante il protocollo ''JavaScript'' è possibile se nel proprio sistema è presente la risorsa ''GeckoActiveXObject''.
 
[2] Analogamente, con la proprietà ''WebView.Text'' si potrà leggere anche il contenuto di una pagina web caricata da internet.
 

Versione attuale delle 20:27, 20 gen 2024

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.