Android Question WebViewExtras1.ExecuteJavascript(js) not work! Why?

cenyu

Active Member
Licensed User
Longtime User
Hi friends, i have some trobles with WebViewExtras1 ver 2.20.
I have a web page login.html and jsfunction setHtml but when run this code:
B4X:
    html = File.ReadString(File.DirAssets , "login.html")
    html = html.Replace("__TC_APP_TITLE__","Time Controller")
       
    WebView1.Initialize("WebView1")
    Activity.AddView(WebView1, 0, 0, 100%x, 100%y)
    WebView1.JavaScriptEnabled = True
    WebView1.ZoomEnabled=False
    WebViewExtras1.Initialize(WebView1)
    'add the B4A javascript interface to the WebView
    WebViewExtras1.addJavascriptInterface(WebView1, "B4A")
    WebSettings.setDefaultTextEncodingName(WebView1,"utf-8")
   
   
    WebViewExtras1.LoadHtml(html)
     
   
    Dim js As String
    js = $"B4A.CallSub(setHTML('appVersion','1.0.0.2'))"$
    WebViewExtras1.ExecuteJavascript(js)

setHtml is not starting.
Where i am wrong?

My javascript function is simple:
JavaScript:
<script>
     function setHTML(elementId, val){
       alert(val);
       document.getElementById(elementId).innerHTML  = val;
    }

    </script>
 
hi
looks like theres minor syntax error when you call java script func:

Dim js As String
js = $"B4A.CallSub('setHTML', 'appVersion', '1.0.0.2')"$
WebViewExtras1.ExecuteJavascript(js)


this suppose that b4a 'setHtml' takes two parameters i.e parameterid and val. Pass this code
thanks
 
Upvote 0
May be:
B4X:
    Dim js As String
    js = $"setHTML('appVersion','1.0.0.2')"$
    WebViewExtras1.ExecuteJavascript(js)

setHTML is JS function into html. How to start setHTML from B4A code?
 
Upvote 0
Check this example

edit: I tested the example works with WebViewExtra v1.42 but the JavaScript buttons click (Webview to B4A) does not work on WebViewExtras2 v2.20
 
Last edited:
Upvote 0
May be:
B4X:
[CODE=b4x]sub webview.pagefinished(url as string)
    Dim js As String
    js = $"setHTML('appVersion','1.0.0.2')"$
    WebViewExtras1.ExecuteJavascript(js)
end sub[/CODE]

setHTML is JS function into html. How to start setHTML from B4A code?
you run your code within webview's PageFinished (Url As String) sub. you have to wait until the page loads.

B4X:
sub webview_pagefinished(url as string)
    Dim js As String
    js = $"setHTML('appVersion','1.0.0.2')"$
    WebViewExtras1.ExecuteJavascript(js)
end sub

B4A.CallSub() is for raising an event in b4a from the webpage. ExecuteJavascript() is the opposite
 
Last edited:
Upvote 0
Check this example

edit: I tested the example works with WebViewExtra v1.42 but the JavaScript buttons click (Webview to B4A) does not work on WebViewExtras2 v2.20
? hmmmn I would update the example soon, I have one that works with the latest WebviewExtras. The change required is just a little different.
 
Upvote 0
? hmmmn I would update the example soon, I have one that works with the latest WebviewExtras. The change required is just a little different.
I seldom use webview (+webbviewextras) but I want to buy you a coffee with the new update.
 
Upvote 0
I seldom use webview (+webbviewextras) but I want to buy you a coffee with the new update.
Thanks, I added the example for WebviewExtras2.
Check here for it.

Webview can be awesome if you learn to use it the right way, I love it as I can move my app to the web with little changes and still have it work for Android.
 
Upvote 0
Back
Top