Autore Topic: Gambas e JavaScript  (Letto 1039 volte)

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #15 il: 13 Dicembre 2016, 16:37:53 »
Ovviamente se il tentativo è quello di spostare il caret, questo deve essere fatto su un oggetto che accetta il caret (un textbox in questo caso) mentre Jorge tentava di farlo su di un testo html (come è quello contenuto nel tag <div>) che non può accettare un caret. Puoi selezionare il testo di una pagina html, ma non puoi fissare il cursore al suo interno...

Spero sia sufficiente. Dai pure tu la risposta nella ML.
ciao

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #16 il: 13 Dicembre 2016, 16:42:44 »
Scusa ma mi sono dimenticato una cosa... oltre alla modifica nel file html c'è da correggere anche una riga nella sub Button1_Click:

non serve scomodare document.execCommand come in questa riga:  :nono:
Codice: [Seleziona]
WebView1.Eval(Subst("document.execCommand('&1', false, false)", s))

ma è sufficiente questo:  :ok:
Codice: [Seleziona]
WebView1.Eval(s)


Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #17 il: 13 Dicembre 2016, 17:17:19 »
va sostituito con questo:
......
ho provato e funziona
Infatti era quello che sottoponevo all'attenzione di Gianluigi: l'assenza di un elemento valido. Però, se non erro, il suo tentativo era di ottenere lo spostamento del cursore direttamente sull'oggetto WebView di Gambas anziché all'interno dell'oggetto Textarea di Html.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #18 il: 13 Dicembre 2016, 17:18:15 »
Scusa Gianfranco,
mi sono dovuto assentare.
Intanto grazie delle spiegazioni, non so se hai visto le discussioni a cui rimandavo all'inizio della discussione ma sia lui che io una soluzione allo spostamento del caret nella pagina lo abbiamo ottenuto usando dei trucchi.
Io usando Desktop.SendKeys() e lui con questo codice:
Codice: [Seleziona]
WebView1.SetFocus()
  WebView1.html &= "··" 'two "middle points" is something I have no seen in my life.
  WebView1.Eval("document.execCommand('findString',false,'··')") 'search and select it...
  WebView1.Eval("document.execCommand('insertText',false,'')") 'and delete it. The cursor remains at the end of text.
Mi riservo di meglio leggere e comprendere le tue spiegazioni ma se mi dici che con il JS è impossibile spostare il cursore nella pagina senza l'uso di oggetti specifici penso che a questo punto il discorso decada.
Dico bene?
Ciao e ancora grazie.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #19 il: 13 Dicembre 2016, 17:26:48 »
Però, se non erro, il suo tentativo era di ottenere lo spostamento del cursore direttamente sull'oggetto WebView di Gambas anziché all'interno dell'oggetto Textarea di Html.

Infatti, sia Jorge che io una soluzione l'avevamo trovata, tutto è nato dal fatto che sia Minisini che Moviga qualcosa sostenevano che con il JS sarebbe stato possibile spostare il cursore nella pagina.
Salvo naturalmente postare il codice malgrado mia cortese richiesta specifica a Moviga.

Ciao

P.S. Con la textarea sapevamo farlo anche noi  ;)
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #20 il: 13 Dicembre 2016, 17:35:53 »
Se per 'caret' intendiamo il cursore classico (quello di solito lampeggiante) che possiamo posizionare con il mouse e possiamo spostare con i tasti freccia non c'è dubbio che la scelta possibile, in una pagina html, sia solo un oggetto <input> oppure un <textarea>.
Se lo scopo invece è quello di selezionare del testo presente nella pagina html, per mezzo di codice, allora è un'altro discorso... ma in quel caso non può esistere un 'caret' fisico posizionato all'interno del testo...  :nono:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #21 il: 13 Dicembre 2016, 18:10:32 »
Se per 'caret' intendiamo il cursore classico (quello di solito lampeggiante) che possiamo posizionare con il mouse e possiamo spostare con i tasti freccia non c'è dubbio che la scelta possibile, in una pagina html, sia solo un oggetto <input> oppure un <textarea>.
Se lo scopo invece è quello di selezionare del testo presente nella pagina html, per mezzo di codice, allora è un'altro discorso... ma in quel caso non può esistere un 'caret' fisico posizionato all'interno del testo...  :nono:

Non ho capito se stai parlando in senso assoluto o solo dici che non è possibile direttamente spostare il cursore nella pagina web con una funzione JS, altrimenti il progetto allegato smentisce quanto sostieni.
 :ciao:

P.S. Ho aggiornato il progetto per renderlo più comprensibile
« Ultima modifica: 14 Dicembre 2016, 12:22:42 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #22 il: 13 Dicembre 2016, 18:19:12 »
Effettivamente...... :-X
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #23 il: 13 Dicembre 2016, 18:34:58 »
OK, questo è un'altro progetto.... io ero rimasto a quello di prima con il codice Javascript...
su questo non metto dubbio

Offline gianfry56

  • Gambero
  • **
  • Post: 78
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #24 il: 13 Dicembre 2016, 18:47:07 »
Questo progetto vi permette di spostare il cursore in una 'pseudo-pagina web' solo perché l'oggetto WebView è un oggetto editabile e Desktop.SendKeys vi permette di spostarvi all'interno, ma non è opera di javascript...
Se non ho capito male, l'oggetto del post era 'come avrebbe potuto spostare il caret da programma' in javascript...

Ma forse sono fuori strada  :mad:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #25 il: 13 Dicembre 2016, 20:58:58 »
Questo progetto vi permette di spostare il cursore in una 'pseudo-pagina web' solo perché l'oggetto WebView è un oggetto editabile e Desktop.SendKeys vi permette di spostarvi all'interno, ma non è opera di javascript...
Se non ho capito male, l'oggetto del post era 'come avrebbe potuto spostare il caret da programma' in javascript...

Ma forse sono fuori strada  :mad:

Mi sa che anche qui c'è un qui pro quo, il progetto postato era solo per facilitare chi voleva cimentarsi nella soluzione con buttati li un paio di righe tanto per spiegare cosa andavo cercando.
L'oggetto della discussione recita Gambas e JS, nel primo post mi riferisco chiaramente (con tanto di rimando alle discussioni) alle domande di Jorge, non vedo cosa ci sia da capire.
Il mio trucco non ha niente a che fare con JavaScript (anche perché in una discussione precedente a queste Jorge si era detto contrario a soluzioni che prevedessero JS) ma il trucco di Jorge usa Java Script.
Qui parliamo di Gambas e più precisamente del componente gb.gui.qt.webkit e quindi si agisce su di una WebView che è quella usata da Jorge per htEditor.
Mica stiamo parlando di fare un sito web.
Ti rammento che Minisini, Moviga e sembrerebbe anche Vuott (ma non sono sicuro) sostengono che lo spostamento del cursore in una pagina WebView si può fare con JS senza trucchi di sorta.

Spero con questo di aver chiarito il tutto.

 :ciao: :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #26 il: 13 Dicembre 2016, 21:19:46 »
.... e sembrerebbe anche Vuott (ma non sono sicuro) sostengono che lo spostamento del cursore in una pagina WebView si può fare con JS senza trucchi di sorta.
No, io ho solo affermato che quella soluzione con <DIV> non andava bene.



Questo progetto vi permette di spostare il cursore in una 'pseudo-pagina web' solo perché l'oggetto WebView è un oggetto editabile e Desktop.SendKeys vi permette di spostarvi all'interno, ma non è opera di javascript...
Tenendo conto che non ho mai visto cursori sulle pagine html in quanto tali, io credo che due siano le possibili strade:
o WebView è formato anche da un altro oggetto tstuale, come una sorta di "Ospite", il quale oggetto conferisce a WebView la capacità anche di scrivere del testo, visibile poi sul WebView medesimo; oppure la risorsa webkit, sulla quale si basa l'oggetto WebView di Gambas, possiede essa stessa una proprietà, una capacità che consente di scrivere e mostrare il cursore.

Se è vera la prima ipotesi, un accesso e gestione diretta della proprietà .Text (o .Richtext) di tale oggetto "Ospite" appare improponibile, poiché l'oggetto WebView non posiede una prorpietà .Children (c0me invece è posseduta da taluni oggetti). Dal che si dovrebbe ipotizzare la presenza di un oggetto "Ospite" non visibile, non accessibile dall'oggetto "Ospitante" (e ciò è possibile come è stato egregiamente dimostrato da Gianluigi in un'altra discussione o in un dialogo privato con me).

Se è vera la seconda, bisogna capire se c'è un comando specifico per far "spostare" il cursore, e quale sia.  ...ma siamo sempre in un ambito extra-javascript, come per altro verso indicato da gianfry56.
« Ultima modifica: 13 Dicembre 2016, 21:23:20 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #27 il: 13 Dicembre 2016, 21:37:44 »
.... e sembrerebbe anche Vuott (ma non sono sicuro) sostengono che lo spostamento del cursore in una pagina WebView si può fare con JS senza trucchi di sorta.
No, io ho solo affermato che quella soluzione con <DIV> non andava bene.

OK, ma mi era parso leggendo fra le righe... ;D
Citazione
Questo progetto vi permette di spostare il cursore in una 'pseudo-pagina web' solo perché l'oggetto WebView è un oggetto editabile e Desktop.SendKeys vi permette di spostarvi all'interno, ma non è opera di javascript...
Tenendo conto che non ho mai visto cursori sulle pagine html in quanto tali, io credo che due siano le possibili strade:
o WebView è formato anche da un altro oggetto tstuale, come una sorta di "Ospite", il quale oggetto conferisce a WebView la capacità anche di scrivere del testo, visibile poi sul WebView medesimo; oppure la risorsa webkit, sulla quale si basa l'oggetto WebView di Gambas, possiede essa stessa una proprietà, una capacità che consente di scrivere e mostrare il cursore.

Se è vera la prima ipotesi, un accesso e gestione diretta della proprietà .Text (o .Richtext) di tale oggetto "Ospite" appare improponibile, poiché l'oggetto WebView non posiede una prorpietà .Children (c0me invece è posseduta da taluni oggetti). Dal che si dovrebbe ipotizzare la presenza di un oggetto "Ospite" non visibile, non accessibile dall'oggetto "Ospitante" (e ciò è possibile come è stato egregiamente dimostrato da Gianluigi in un'altra discussione o in un dialogo privato con me).
Purtroppo non mi ricordo cosa ho detto  :rolleyes:
Però un Children esiste WebView.Current.Children il figlio del corrente Webframe di Webview.
Più precisamente è una raccolta di tutti i figli.
Citazione

Se è vera la seconda, bisogna capire se c'è un comando specifico per far "spostare" il cursore, e quale sia.  ...ma siamo sempre in un ambito extra-javascript, come per altro verso indicato da gianfry56.

Questo comando è custodito gelosamente dalle vestali giessine agli ordini di Moviga e Benoit  ;D

 :ciao: :ciao: :ciao: :ciao:
« Ultima modifica: 13 Dicembre 2016, 22:07:54 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #28 il: 13 Dicembre 2016, 23:30:11 »
Però un Children esiste WebView.Current.Children il figlio del corrente Webframe di Webview.
Più precisamente è una raccolta di tutti i figli.
Eh, ma la guida in-linea parla di "...of all child frames". Infatti, in condizioni normali verificando il numero di "Figli":
Codice: [Seleziona]
Print WebView1.Current.Children.Count
dà zero.



Questo comando è custodito gelosamente dalle vestali giessine agli ordini di Moviga e Benoit
Eh !
Si potrebbe dare uno sguardo ai sorgenti, ma agli effetti pratico poi.... non servirebbe.    :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Gambas e JavaScript
« Risposta #29 il: 14 Dicembre 2016, 11:40:57 »
Però un Children esiste WebView.Current.Children il figlio del corrente Webframe di Webview.
Più precisamente è una raccolta di tutti i figli.
Eh, ma la guida in-linea parla di "...of all child frames". Infatti, in condizioni normali verificando il numero di "Figli":
Codice: [Seleziona]
Print WebView1.Current.Children.Count
dà zero.

Si è vero l'avevo notato anche io, se provavo durante lo svolgimento del codice una cosa tipo
Codice: [Seleziona]
Print WebView1.Current.Children[0].Name
rispondeva sempre Out of baund

Citazione

Questo comando è custodito gelosamente dalle vestali giessine agli ordini di Moviga e Benoit
Eh !
Si potrebbe dare uno sguardo ai sorgenti, ma agli effetti pratico poi.... non servirebbe.    :-\

Io avevo a suo tempo dato un occhiata qui ma per me i file cpp e cippa hanno lo stesso significato  ;D

 :ciao: :ciao: :ciao:

P.S. Ho aggiornato il progetto
« Ultima modifica: 14 Dicembre 2016, 12:10:14 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro