Sub B4XPage_Appear
WebView1.LoadHtml("<h1>Just text, wait</h1>")
Sleep(3000)
B4JWebViewSettings(WebView1, "setJavaScriptEnabled", True)
Me.as(JavaObject).RunMethod("setAlertHandler", Array(WebView1))
Me.as(JavaObject).RunMethod("setConfHandler", Array(WebView1, "Sure ?"))
WebView1.LoadHtml("<script> alert('Hello B4J WebView!') </script>")
Sleep(3000)
WebView1.LoadHtml("<script> confirm('Hello B4J WebView ?') </script>")
End Sub
Sub B4JWebViewSettings(wv1 As WebView, parameter As String, value As Boolean)
wv1.As(JavaObject).RunMethodJO("getEngine", Null).RunMethod(parameter, Array(value)) 'Webview1.As(JavaObject).RunMethodJO("getEngine", Null).RunMethod("executeScript", Array(js))
End Sub
Sub jsAlert(s As String)'ignore
xui.MsgboxAsync(s, "Information:")
End Sub
#if java
import javafx.scene.web.*;
import javafx.event.*;
import javafx.util.Callback;
import javafx.scene.web.WebView;
import javafx.scene.web.WebEngine;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import java.util.Optional;
import javafx.scene.control.ButtonType;
public void setAlertHandler(WebView wv) {
wv.getEngine().setOnAlert(new EventHandler<WebEvent<String>>(){
@Override
public void handle(WebEvent<String> arg0) {
callerAlert(arg0.getData());
}
});
}
public void callerAlert(String s){
try{
_jsalert(null, s); // lazy way to call sub
} catch (Exception e) {
}
}
// set the handler
public static void setConfHandler(WebView wv, String msg){
WebEngine we = wv.getEngine();
we.setConfirmHandler(new Callback<String, Boolean>() {
@Override public Boolean call(String msg) {
Boolean confirmed = confirm(msg);
return confirmed;
}
});
}
//show the dialog box
private static boolean confirm(String msg){
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Are you sure ?");
alert.setHeaderText(msg);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.OK){
return true;
} else {
return false;
}
}
#End If