Autore Topic: [Risolto] WebView Paste senza formattazione  (Letto 728 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
[Risolto] WebView Paste senza formattazione
« il: 09 Marzo 2017, 16:50:43 »
 :ciao:
WebView: Sto cercando di ottenere il “paste” del testo senza formattazione (es. da LibreOffice Writer), con Ctrl+V funziona, mentre con la voce di menu no (funziona solo con poche parole).
Dove sto sbagliando? C’è forse un’impostazione che non conosco?
Vedere progetto allegato.

 :ciao: :ciao:
« Ultima modifica: 10 Marzo 2017, 21:31:57 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #1 il: 09 Marzo 2017, 19:39:03 »
Ciao Gianluigi,
ti premetto di non conoscere il componente WebView, e se dico qualche fesseria ti chiedo scusa anticipatamente,
ma essendo curioso ho voluto fare una prova.
Ho aperto un documento con LibreOffice Writer, ho selezionato del testo, avviato il tuo esempio ho incollato lo
stesso clikkando su Paste del menu popup della WebView e la console mi ha visualizzato il testo.
Non so se la prova da fare era questa, se la risposta è sì ti dico che il testo viene incollato correttamente da poche
parole a varie pagine. Ti allego uno screenshot.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #2 il: 09 Marzo 2017, 20:08:27 »
Ciao Tornu,
ti ringrazio per la prova, purtroppo questo conferma che la voce di menu non funziona.
Infatti se provi invece con Ctrl+V puoi vedere che il testo si incolla (non formattato) sulla WebView, almeno spero  :)

Prima mi ero dimenticato di precisare che ho fatto anche altre prove, prima di tutto l’uso di paste
Codice: [Seleziona]
Public Sub mnPaste_Click()
 
  Dim s As String
 
  s = Clipboard.Paste("text/plain")
  If IsNull(s) Then Return 
  Clipboard.Copy(s)
  WebView1.Eval("document.execCommand('Paste', false, false)")
 
End

Comunque tutte senza esito soddisfacente.

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

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #3 il: 09 Marzo 2017, 21:05:52 »
Sì è vero con Ctrl+V funziona.
Con questa modifica funziona anche dal menu popup, utilizzando al posto di WebView1.Eval,WebView1.HTML
Codice: [Seleziona]
Public Sub mnPaste_Click()
  Dim s As String

  s = Clipboard.Paste("text/plain")
  If IsNull(s) Then Return
  s = "<div>" & s & "</div>" 
  s = Replace(s, "\n", "</div><br><div>")
  s = Replace(s, ".", ".</div><div>")

  WebView1.HTML = s
End
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #4 il: 09 Marzo 2017, 21:20:25 »

Con questa modifica funziona anche dal menu popup, utilizzando al posto di WebView1.Eval,WebView1.HTML
Codice: [Seleziona]
Public Sub mnPaste_Click()
  Dim s As String

  s = Clipboard.Paste("text/plain")
  If IsNull(s) Then Return
  s = "<div>" & s & "</div>" 
  s = Replace(s, "\n", "</div><br><div>")
  s = Replace(s, ".", ".</div><div>")

  WebView1.HTML = s
End

Solo apparentemente, in realtà sostituisce tutto quello che già c'è e comunque anche con debiti accorgimenti, non potresti mai ottenere il comportamento che ottieni da Ctrl+V puoi controllare cosa intendo usando il pulsante che stampa il codice nella console.

Per meglio spiegarmi, un "normale" incollaggio lo puoi fare più volte e inserendolo in posizioni differenti.

 :ciao:
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:WebView Paste senza formattazione
« Risposta #5 il: 10 Marzo 2017, 09:01:33 »
Potrei aver risolto con un trucco:
Codice: [Seleziona]
Public Sub mnPaste_Click()
 
  Dim s, p As String
 
  s = Clipboard.Paste("text/plain")
  If IsNull(s) Then Return
  p = "[xhpz5]"
  WebView1.Eval(Subst("document.execCommand('InsertHTML', false,'&1')", p))
  s = "<div>" & s & "</div>" 
  s = Replace(s, "\n", "</div><br><div>")
  s = Replace(s, ".", ".</div><div>")
  WebView1.HTML = Replace(WebView1.HTML, p, s)
 
End

Cosa ne pensate?

 :ciao: :ciao:
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:WebView Paste senza formattazione
« Risposta #6 il: 10 Marzo 2017, 12:19:12 »
Contrordine ragazzi,  ;D
il codice
Codice: [Seleziona]
Public Sub mnPaste_Click()
 
  Dim s As String
 
  s = Clipboard.Paste("text/plain")
  Clipboard.Copy(s) 
  WebView1.Eval("document.execCommand('Paste', false,false)")
 
End

funziona, l'importante è settare con
Codice: [Seleziona]
WebSettings[WebSettings.JavascriptCanAccessClipboard] = True

Evidentemente sbagliavo qualcosa o non ricompilavo prima delle prove, scusate il disturbo.  :-[
E pensare che ci sono diventato matto...

Conferme a questo sarebbero gradite  :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #7 il: 10 Marzo 2017, 21:17:15 »
Funziona perfettamente.  :ok:
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:WebView Paste senza formattazione
« Risposta #8 il: 10 Marzo 2017, 21:31:21 »
Ok grazie posso mettere risolto.

 :ciao:
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:[Risolto] WebView Paste senza formattazione
« Risposta #9 il: 13 Marzo 2017, 20:34:53 »
:ciao:
WebView: Sto cercando di ottenere il “paste” del testo senza formattazione (es. da LibreOffice Writer), con Ctrl+V funziona, mentre con la voce di menu no (funziona solo con poche parole).
Dove sto sbagliando? C’è forse un’impostazione che non conosco?
Vedere progetto allegato.

 :ciao: :ciao:

In effetti almeno una impostazione c'è e si chiama PasteAndMatchStyle che letteralmente significa Incolla e mantieni lo stile e pertanto credevo volesse significare l'esatto opposto di quanto cercavo.
C'è anche un RemoveFormat ma non ho capito come funziona.
Purtroppo su 127 comandi js implementati dalla web view riesco a farne funzionare solo pochissimi.  :'(
Allego esempio che tiene conto di PasteAndMatchStyle.

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