简体   繁体   English

如何在 Flutter WebView 或 InAppWebView 中添加 JavaScriptInterface?

[英]How to add JavaScriptInterface in Flutter WebView or InAppWebView?

In Android I can add javascript interface:在 Android 中,我可以添加 javascript 接口:

class JsInterface(private val onClose: () -> Unit) {
    @android.webkit.JavascriptInterface    
    fun close() {
        onClose()    
    }
}
...
addJavascriptInterface(JsInterface { this@WebViewActivity.finish() }, "client")

How can I do the same in Flutter WebView or InAppWebView or other packages?我如何在 Flutter WebView 或 InAppWebView 或其他包中做同样的事情?

I suggest you to read this article, where they take a closer look at flutter_inappwebview .我建议你阅读这篇文章,在那里他们仔细看看flutter_inappwebview But try this code example for quick answer:但是试试这个代码示例以获得快速答案:

              InAppWebView(
                initialUrl: 'url',
                onWebViewCreated: (controller) =>
                    control.webController = controller
                      ..addJavaScriptHandler(
                        handlerName: 'serverSideJsFuncName',
                        callback: (data) {
                          // Catch and handle js function
                        },
                      ),
              )

On the other hand, if you want to update server side JavaScript you can do it via InAppWebViewController like this:另一方面,如果你想更新服务器端 JavaScript,你可以通过InAppWebViewController这样做:

  Future<void> evalJs(dynamic param) async {
    await webController.evaluateJavascript(
        source: "window.someFuncName( '$param ');");
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM