Buongiorno,
Ho postato nel forum italiano ma forse questa è la sezione più corretta
Ho una barra con diversi pulsanti uno carica sul componete WebView la pagina principale
uno torna indietro alla pagina precedente
mentre uno dovrebbe refresh della pagina corrente partendo dal top
Un pò di tempo in b4i scrivevo
La soluzione in b4a funziona in b4i non funziona più
Mi è stato suggerito questo
Inserendo
Ma continua a caricarmi nel punto dove sono e non al top
Cercando in rete
Il problema potrei risolverlo ricavandomi il nome della pagina per poi ricaricarlo
tipo
Il problema che la proprietà Url del controllo WebView non esiste in b4i
quindi il mio problema come faccio a ricavarmi in b4i il non della pagina corrente per poi fare un LoadUr
In html il nome della pagina viene letto in questo modo
quindi in teoria dovrei scrivere una cosa del tipo
Dove la funzione restituisce il nome della pagina
Quindi dovrei modificare questa funzione in modo da restituirmi il nome della pagina ma che modifiche devo apportare?
sicuramente deve restituire una stringa quindi
Mi aiutate?
Grazie mille
Ho postato nel forum italiano ma forse questa è la sezione più corretta
Ho una barra con diversi pulsanti uno carica sul componete WebView la pagina principale
uno torna indietro alla pagina precedente
mentre uno dovrebbe refresh della pagina corrente partendo dal top
Un pò di tempo in b4i scrivevo
B4X:
Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private paginaweb As WebView
Public paginacaricata As String
End Sub
sub refresh_Click
#If B4a
paginacaricata= paginaweb.Url
paginaweb.LoadUrl(paginacaricata)
#else B4i
' Dim no As NativeObject= paginaweb
' no.RunMethod("stringByEvaluatingJavaScriptFromString:", Array("window.location.reload();"))
#end if
La soluzione in b4a funziona in b4i non funziona più
Mi è stato suggerito questo
B4X:
dim nome = RunJavaScript("window.location.href;")
B4X:
Private Sub RunJavaScript (js As String) As ResumableSub
#if B4A
WebViewExtras1.executeJavascript(WebView1, $"B4A.CallSub('Process_HTML', true, ${js})"$)
Wait For Process_Html(html As String)
Return html
#Else If B4J
Return WebView1.As(JavaObject).RunMethodJO("getEngine", Null).RunMethod("executeScript", Array(js))
#Else If B4i
Dim sf As Object = paginaweb.EvaluateJavaScript(js)
Dim valore As String
sf= paginaweb.Top
Wait For (sf) WebView1_JSComplete (Success As Boolean, Result As String)
sf= paginaweb.Top
valore = Result
Log (valore)
Return Result
#end if
End Sub
Inserendo
B4X:
sf= paginaweb.Top
Ma continua a caricarmi nel punto dove sono e non al top
Cercando in rete
Il problema potrei risolverlo ricavandomi il nome della pagina per poi ricaricarlo
tipo
B4X:
' paginacaricata= paginaweb.Url
' paginaweb.LoadUrl(paginacaricata)
Il problema che la proprietà Url del controllo WebView non esiste in b4i
quindi il mio problema come faccio a ricavarmi in b4i il non della pagina corrente per poi fare un LoadUr
In html il nome della pagina viene letto in questo modo
HTML:
<!DOCTYPE html>
<html>
<body>
<h1>The Window Location Object</h1>
<h2>The href Property</h2>
<p id="demo"></p>
<script>
let url = location.href;
document.getElementById("demo").innerHTML = url;
</script>
</body>
</html>
quindi in teoria dovrei scrivere una cosa del tipo
B4X:
dim nome as string = RunJavaScript("window.location.href();")
Dove la funzione restituisce il nome della pagina
Quindi dovrei modificare questa funzione in modo da restituirmi il nome della pagina ma che modifiche devo apportare?
B4X:
Private Sub RunJavaScript (js As String) As ResumableSub
#if B4A
WebViewExtras1.executeJavascript(WebView1, $"B4A.CallSub('Process_HTML', true, ${js})"$)
Wait For Process_Html(html As String)
Return html
#Else If B4J
Return WebView1.As(JavaObject).RunMethodJO("getEngine", Null).RunMethod("executeScript", Array(js))
#Else If B4i
Dim sf As Object = paginaweb.EvaluateJavaScript(js)
Dim valore As String
sf= paginaweb.Top
Wait For (sf) WebView1_JSComplete (Success As Boolean, Result As String)
sf= paginaweb.Top
valore = Result
Log (valore)
Return Result
#end if
End Sub
sicuramente deve restituire una stringa quindi
B4X:
Private Sub RunJavaScript (js As String) As string
Grazie mille
Last edited: