Sub Class_Globals
Private Root As B4XView
Private xui As XUI
Private WebView1 As WebView
Private WKUIDelegate As NativeObject
Private hud As HUD
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
WKUIDelegate = WKUIDelegate.Initialize("B4IWebViewUIDelegate").RunMethod("new", Null)
WebView1.As(NativeObject).SetField("UIDelegate", WKUIDelegate)
End Sub
Private Sub Button1_Click
WebView1.EvaluateJavaScript($"alert ("test");"$)
End Sub
Private Sub WebView1_Alert(Message As String)
Log(Message)
hud.ToastMessageShow(Message, True)
End Sub
#if OBJC
@end
@interface B4IWebViewUIDelegate:NSObject<WKUIDelegate>
@end
@implementation B4IWebViewUIDelegate
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {
[B4IObjectWrapper raiseUIEvent:webView :@"_alert:" :@[message]];
completionHandler();
}
#End If