一、android端配置:

1、首先进行webView的配置

Webview webView=findViewById(rId);

WebSettings settings = webView.getSettings();

// 设置WebView支持JavaScript 必须设置

settings.setJavaScriptEnabled(true);

2、定义web端要调用的类,同时提供给web端

/**

* js调用android

*/

public class WebFunction {

//这个是js调用android,给我传递参数。参数是相互定义好的

@JavascriptInterface

public void goToDetails(int id) {

//方法体

}

}

//将该方法提供给web端

//第一个参数是上面创建的类对象,

//第二个参数是android和web交互的唯一标识符,web端使用该标识符调用类对象的方法

webView.addJavascriptInterface(new WebFunction(), "WebFunction");

二、Ios端设置(使用的是WKWebView)

// 进行配置控制器

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];

// 实例化对象

configuration.userContentController = wkUController;

[configuration.userContentController addScriptMessageHandler:self name:@"goToDetails"];

注:本人是android开发,ios代码只是复制的,goToDetails是一个方法,提供给web端调用,与下面web调用的方法名一致

三、web端设置

//判断是否为ios端访问

function _IsIOS() {

if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {

return true;

} else {

return false;

}

}

//判断是否为android端访问

function _IsAndroid() {

if (/(Android|Adr)/i.test(navigator.userAgent)) {

return true;

} else {

return false;

}

}

//下面是web端在点击事件中调用移动端方法

//点击调用移动端方法

function onItemClick(audioId) {

if (_IsAndroid()) {

//WebFunction是android和web定义的标识类对象的唯一标识符,和android里传递的标识符是一 一对应的,goToDetails是类对象的方法名。

WebFunction.goToDetails(audioId);

} else if (_IsIOS()) {

try {

//调用格式: window.webkit.messageHandlers.方法名(与Ios定义的方法名一样).postMessage(参数);

window.webkit.messageHandlers.goToDetails.postMessage(id);

} catch (error) {

console.log(error)

}

}

}

web代码复制的,仅供参考

H5补充使用vue框架的写法:

5f717b17f752

vue框架的写法.png

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐