Swift WKWebView 与JS交互

1.WKWebView调用JS方法(包括参数传递与回传)

WKWebView方法

//jsmessage为js方法返回值  err为错误信息   jsHandlerFunc为JS中的方法   ---- 为webview传递给JS的参数
 webview.evaluateJavaScript("jsHandlerFunc(\"----\")") { (jsmessage, err) in
            
print(jsmessage)
}
复制代码

JS方法

<script type="text/javascript">
      function jsHandlerFunc(message) {
          //显示webview传参(message) return "xxxxx" 为js回传给webview的参数 (jsmessage)
            document.getElementById('js-content').innerHTML = "jsdajjadsfjsfjasdj" + message;
            return "xxxxx"
        }
</script>
复制代码

还有一种方法是使用WKUserScript 大家自行研究

2.JS调用webview

WKWebView方法

 webview.configuration.userContentController.add(self, name: "nativeMethod")

复制代码

实现WKScriptMessageHandler协议下面的方法

func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        
        print(message)//WKScriptMessage对象
        print(message.name) //name : nativeMethod
        print(message.body) //js回传参数
    }
复制代码

JS方法

<script type="text/javascript">
      function nativeClick(){
        window.webkit.messageHandlers.nativeMethod.postMessage({body: 'paramters'});
    }
</script>
复制代码

注意:要记得移除添加的nativeMethod 不然会引起内存泄露

        
webview.configuration.userContentController.removeScriptMessageHandler(forName:"nativeMethod")

复制代码

那么怎样从js调用Swift的方法然后再得到返回值呢

最笨的方法,js调用Swift 后,再用Swift调用js传值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值