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传值