iOS的webview中js如何更好的和原生交互

2024年11月20日 10:21
有1个网友回答
网友(1):

Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过addJavas criptInterface方法,可以将Java的类注册进webkit,给网页上的js进行调用,而且还可以通过loadUrl方法是给webkit传递一个URL,供浏览器来进行解析,实现Java和js交互。要想运行网页上的js脚本,webview必须设置支持Javas cript。Java代码1mWebview.getSettings().setJavas criptEnabled(true);然后是设置webview要加载的网页:web的网页:webView.loadUrl("http://www.google.com");本地的网页:webView.loadUrl("file:///android_asset/XX.html"); //本地的存放在:assets文件夹中webview做完基本的初始化后咱们还要要给它,加进一个回调的代理类Javas criptInterface,并给它一个调用的名称:ncpJava代码1mWebView.addJavas criptInterface(new Javas criptInterface(),"ncp");Javas criptInterface可以是一个普通的Java类,类实现的方法,均可被js回调:Java代码final class Javas criptInterface {public int callOnJs() {return 1000;}public void callOnJs2(String mode) {//TODO}}Java要调用js的方法,只需知道js的方法名称即可:Java代码1mWebView.loadUrl("javas cript:onSaveCallback()");js 这边就更简单:Js代码window.onload = function(){document.getElementById('btn_1').addEventListener('click', onBtnClick, false);var _int_value = window.ncp.callOnJs();alert("get int from java:" + _int_value );}function onBtnClick() {window.ncp.callOnJs2("click");