Sub refresh_Click
Dim no As NativeObject= paginaweb
no.RunMethod("stringByEvaluatingJavaScriptFromString:", Array("window.location.reload();"))
'paginacaricata= paginaweb.Initialize
'paginaweb.LoadUrl(paginacaricata)
End Sub
Copying updated assets files (27)
Application_Start
Application_Active
Error occurred on line: 99 (Main)
Method not found: stringByEvaluatingJavaScriptFromString:, target: <WKWebView: 0x16357c00; frame = (0 106.764; 1024 641.236); layer = <CALayer: 0x15564d10>>
Stack Trace: (
CoreFoundation <redacted> + 152
libobjc.A.dylib objc_exception_throw + 38
CoreFoundation <redacted> + 0
Sulcis Food Menu +[B4I runDynamicMethod:method:throwErrorIfMissing:args:] + 354
Sulcis Food Menu -[B4INativeObject RunMethod::] + 162
Sulcis Food Menu -[b4i_main _refresh_click] + 790
CoreFoundation <redacted> + 68
CoreFoundation <redacted> + 300
Sulcis Food Menu +[B4I runDynamicMethod:method:throwErrorIfMissing:args:] + 1488
Sulcis Food Menu -[B4IShell runMethod:] + 588
Sulcis Food Menu -[B4IShell raiseEventImpl:method:args::] + 1908
Sulcis Food Menu -[B4IShellBI raiseEvent:event:params:] + 1328
Sulcis Food Menu __33-[B4I raiseUIEvent:event:params:]_block_invoke + 56
libdispatch.dylib <redacted> + 10
libdispatch.dylib <redacted> + 22
libdispatch.dylib _dispatch_main_queue_callback_4CF + 902
CoreFoundation <redacted> + 8
CoreFoundation <redacted> + 848
CoreFoundation CFRunLoopRunSpecific + 470
CoreFoundation CFRunLoopRunInMode + 104
GraphicsServices GSEventRunModal + 80
UIKit UIApplicationMain + 150
Sulcis Food Menu main + 90
libdyld.dylib <redacted> + 2
)
Sto sbagliando istruzione?
In B4a uso
B4X:' paginacaricata= paginaweb.Initialize paginaweb.LoadUrl(paginacaricata)
Sub Class_Globals
Private MiaMap As Map
End Sub
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
MiaMap.Initialize
End Sub
Private Sub B4XPage_Appear
Refresh
End Sub
Public Sub Refresh
Root.RemoveAllViews
Root.LoadLayout("...")
MiaMap.Clear
MiaMap.Put(...)
MiaMap.Put(...)
End Sub
Dichiaralo come pubblico e poi, supponendo che tu lo abbia creato in B4XMainPage, in qualunque altra pagina metti:Altro dubbio
Ho fatto un panello con tasti
Questo codice serve a inserire una riga di javaScript in WebView e farla eseguire. In questo caso la riga JS chiede il refresh della pagina.Ho provato questo codice per fare il rfresh di una pagina
B4X:Sub refresh_Click Dim no As NativeObject= paginaweb no.RunMethod("stringByEvaluatingJavaScriptFromString:", Array("window.location.reload();")) 'paginacaricata= paginaweb.Initialize 'paginaweb.LoadUrl(paginacaricata) End Sub
Ma quado lo eseguo ricevo questo errore
B4X:Copying updated assets files (27) Application_Start Application_Active Error occurred on line: 99 (Main) Method not found: stringByEvaluatingJavaScriptFromString:, target: <WKWebView: 0x16357c00; frame = (0 106.764; 1024 641.236); layer = <CALayer: 0x15564d10>> Stack Trace: ( CoreFoundation <redacted> + 152 libobjc.A.dylib objc_exception_throw + 38 CoreFoundation <redacted> + 0 Sulcis Food Menu +[B4I runDynamicMethod:method:throwErrorIfMissing:args:] + 354 Sulcis Food Menu -[B4INativeObject RunMethod::] + 162 Sulcis Food Menu -[b4i_main _refresh_click] + 790 CoreFoundation <redacted> + 68 CoreFoundation <redacted> + 300 Sulcis Food Menu +[B4I runDynamicMethod:method:throwErrorIfMissing:args:] + 1488 Sulcis Food Menu -[B4IShell runMethod:] + 588 Sulcis Food Menu -[B4IShell raiseEventImpl:method:args::] + 1908 Sulcis Food Menu -[B4IShellBI raiseEvent:event:params:] + 1328 Sulcis Food Menu __33-[B4I raiseUIEvent:event:params:]_block_invoke + 56 libdispatch.dylib <redacted> + 10 libdispatch.dylib <redacted> + 22 libdispatch.dylib _dispatch_main_queue_callback_4CF + 902 CoreFoundation <redacted> + 8 CoreFoundation <redacted> + 848 CoreFoundation CFRunLoopRunSpecific + 470 CoreFoundation CFRunLoopRunInMode + 104 GraphicsServices GSEventRunModal + 80 UIKit UIApplicationMain + 150 Sulcis Food Menu main + 90 libdyld.dylib <redacted> + 2 )
Dim sf As Object = paginaweb.EvaluateJavaScript("window.location.reload();")
Wait For (sf) paginaweb_JSComplete (Success As Boolean, Result As String)
Quello e solo per b4i, per b4x il codice è questoOk provo poi ti dico grazie per ora.
Si sto facendo il progetto in b4x
RunJavaScript("window.location.reload();")
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 = WebView1.EvaluateJavaScript(js)
Wait For (sf) WebView1_JSComplete (Success As Boolean, Result As String)
Return Result
#end if
End Sub
forse. Credo che in JS ci sia un comando per andare lo scrolling in Top , se lo trovi lo devi far eseguire con lo stesso metodo dopo il refresh.Buongiorno,
Ho provato entrambe le soluzioni non da errore ma ottengo due risultati diversi se uso android o iphone
Su android se sono un fondo alla pagina col tasto ricarico ho la pagina che inizia al top e non in fondo (questo effetto e quello che voglio)
Su iphone se in fondo alla pagina mi ricarica la pagina in fondo
Io ho la necessità che quando ricarico mi riporti alt top della pagina come succede per android e non nel punto dove sono tipo in fondo alla pagina carico e ancora in fondo alla pagina.
Si può fare?
Grazie mille
Basta che hai esperienza in JSIl problema e che indirizzo non è sempre lo stesso.
dovrò indagare sullo scrolling al Top.
Grazie purtroppo sul mondo android ho più esperienza mentre in iphone meno
RunJavaScript("window.location.location.replace('www.xfood.it');")
Sub refresh_Click
#If B4a
paginacaricata= paginaweb.Url
paginaweb.LoadUrl(paginacaricata)
#else B4i
' Dim sf As Object = paginaweb.EvaluateJavaScript("window.location.reload();")
' Wait For (sf) paginaweb_JSComplete (Success As Boolean, Result As String)
RunJavaScript("window.location.reload();")
'Dim no As NativeObject= paginaweb
'no.RunMethod("stringByEvaluatingJavaScriptFromString:", Array("window.location.reload();"))
#end if
' paginacaricata= paginaweb.Url
' paginaweb.LoadUrl(paginacaricata)
End Sub
Private Sub Indietro_Click
#If B4a
paginaweb.Back
#else B4i
paginaweb.GoBack
#end if
'paginaweb.Back
End Sub
Private Sub social_Click
paginaweb.LoadUrl ("https://miosito.it/contact/")
End Sub
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)
sf= paginaweb.Top
Wait For (sf) WebView1_JSComplete (Success As Boolean, Result As String)
sf= paginaweb.Top
Return Result
#end if
End Sub
paginacaricata = window.location.href ' Leggo la pagina corrente
paginaweb.LoadUrl(paginacaricata) 'Ricarico la pagina rilevata
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?