首页 > 解决方案 > 如何在 Flutter WebView 或 InAppWebView 中添加 JavaScriptInterface?

问题描述

在 Android 中我可以添加 javascript 接口:

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

如何在 Flutter WebView 或 InAppWebView 或其他包中做同样的事情?

标签: androidflutterdartwebview

解决方案


我建议你阅读这篇文章,他们仔细研究一下flutter_inappwebview。但是请尝试此代码示例以获得快速答案:

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

另一方面,如果你想更新服务器端 JavaScript,你可以这样做InAppWebViewController

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


推荐阅读