Differenze tra le versioni di "Leggere un valore generato da un codice HTML/JavaScript"
Riga 1: | Riga 1: | ||
− | Poiché attualmente non è possibile salvare un file di testo mediante il protocollo ''JavaScript'' <SUP>[[[#Note|nota 1]]]</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>[[[#Note|nota 2]]]</sup>, che mostra il testo scevro dal codice html. E', dunque, necessario attivare il | + | Poiché attualmente non è possibile salvare un file di testo mediante il protocollo ''JavaScript'' <SUP>[[[#Note|nota 1]]]</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>[[[#Note|nota 2]]]</sup>, che mostra il testo scevro dal codice html. E', dunque, necessario attivare il Componente ''gb.qt5.webkit'' e porre o comunque creare sul ''Form'' una ''WebView''. |
− | 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''. | + | 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''. |
Il codice ''html'' può essere, ad esempio, il seguente: | Il codice ''html'' può essere, ad esempio, il seguente: | ||
<HTML> | <HTML> | ||
− | |||
<HEAD> | <HEAD> | ||
Riga 23: | Riga 22: | ||
</head> | </head> | ||
− | |||
</html> | </html> | ||
− | + | Non è necessario che l'Oggetto ''WebView'' sia visibile, o sia comunque effettivamente presente sul ''Form'', è sufficiente che sia inizializzato e che sia assegnato alla Proprietà ".HTML" del ''WebView'' il contenuto del file ".html", sopra descritto. | |
− | Non è necessario che l' | + | <BR>Pertanto nel codice Gambas si potrà anche impostare l'oggetto ''WebView'' anche solo così: |
Private wv As WebView | Private wv As WebView | ||
Riga 34: | Riga 32: | ||
With wv = New WebView(Me) | With wv = New WebView(Me) | ||
− | <FONT color=gray>' '' | + | <FONT color=gray>' ''Carica il codice contenuto nel file html:''</font> |
− | . | + | .HTML = File.Load("<FONT color=gray>''percorso/del/file.html''</font>") |
End With | End With | ||
'''End''' | '''End''' | ||
− | |||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
<FONT color=gray>' ''Nella "TextEdit" sarà mostrato il valore inserito nel ''prompt e successivamente modificato nel file html:</font> | <FONT color=gray>' ''Nella "TextEdit" sarà mostrato il valore inserito nel ''prompt e successivamente modificato nel file html:</font> | ||
− | + | TextEdit1.Text = wv.Text | |
'''End''' | '''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 52: | ||
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> | |
− | + | ||
− | + | <script language="JavaScript"> | |
− | |||
− | |||
<FONT color=blue>//viene svolta la funzione:</font> | <FONT color=blue>//viene svolta la funzione:</font> | ||
Riga 71: | Riga 66: | ||
} | } | ||
− | + | </script> | |
+ | <body> | ||
− | + | <input type="button" onclick="calcolo()" value="Calcola"> | |
− | + | </body></nowiki> | |
− | + | </html></nowiki> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
====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 103: | ||
</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 129: | Riga 108: | ||
<FONT color=blue>// Utilizziamo anche la variabile "c" dichiarata ed istanziata nel codice HTML principale:</font> | <FONT color=blue>// Utilizziamo anche la variabile "c" dichiarata ed istanziata nel codice HTML principale:</font> | ||
var b = 10 * c | var b = 10 * c | ||
− | |||
− | |||
Il codice Gambas sarà: | Il codice Gambas sarà: | ||
Private wv As WebView | Private wv As WebView | ||
Riga 138: | Riga 115: | ||
With wv = New WebView(Me) | With wv = New WebView(Me) | ||
− | <FONT color=gray>' '' | + | <FONT color=gray>' ''Carica il contenuto del file html:''</font> |
− | + | .HTML = File.Load("<FONT color=gray>''/percorso/del/file.html''</font>") | |
End With | End With | ||
'''End''' | '''End''' | ||
− | |||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
− | <FONT color=gray>' '' | + | <FONT color=gray>' ''Utilizza la proprietà ".Text" dell'Oggetto "WebView", per leggere quanto scritto dal metodo "document.write()" del codice "JavaScript":''</font> |
TextEdit1.RichText = wv.Text | TextEdit1.RichText = wv.Text | ||
'''End''' | '''End''' | ||
− | |||
Riga 158: | Riga 133: | ||
[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 | + | [2] Analogamente, con la Proprietà "WebView.Text" si potrà leggere anche il contenuto di una pagina web caricata da internet. |
Versione delle 19:58, 30 dic 2021
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. E', dunque, necessario attivare il Componente gb.qt5.webkit e porre o comunque creare sul Form una WebView.
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'InputBox 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.
Il codice html può essere, ad esempio, il seguente:
<HTML> <HEAD> <SCRIPT> var p = prompt('Inserisci il dato:'); // Modifichiamo il dato aggiungendovi semplicemente del testo: var b = p + ' qualsiasi testo'; // Scrive il dato nella WebView: document.write(b); </script> </head> </html>
Non è necessario che l'Oggetto WebView sia visibile, o sia comunque effettivamente presente sul Form, è sufficiente che sia inizializzato e che sia assegnato alla Proprietà ".HTML" del WebView il contenuto del file ".html", sopra descritto.
Pertanto nel codice Gambas si potrà anche impostare l'oggetto WebView anche solo così:
Private wv As WebView Public Sub Form_Open() With wv = New WebView(Me) ' Carica il codice contenuto nel file html: .HTML = File.Load("percorso/del/file.html") End With End Public Sub Button1_Click() ' Nella "TextEdit" sarà mostrato il valore inserito nel prompt e successivamente modificato nel file html: TextEdit1.Text = wv.Text End
Indice
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 sarà:
Private wv As WebView Public Sub Form_Open() With wv = New WebView(Me) ' Carica il contenuto del file html: .HTML = File.Load("/percorso/del/file.html") End With End Public Sub Button1_Click() ' Utilizza la proprietà ".Text" dell'Oggetto "WebView", per leggere quanto scritto dal metodo "document.write()" del codice "JavaScript": TextEdit1.RichText = wv.Text End
Note
[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.