安卓
安卓相对简单 因为 安卓可以获取到我们h5页面内的window对象
所以
// h5 调用安卓方法
window.discovery.gotoLogin(); // window.x.y (x类名,y方法名)
// 安卓调用h5方法
h5 只需要在 js中声明 方法即可 安卓即可调用
function login(){}
ios
ios 我这里分为2版本
// h5调用 ios
// uiwebview 利用 iframe 方式
function loadURL(url) {
var iFrame;
iFrame = document.createElement("iframe");
iFrame.setAttribute("src", url);
iFrame.setAttribute("style", "display:none;");
iFrame.setAttribute("height", "0px");
iFrame.setAttribute("width", "0px");
iFrame.setAttribute("frameborder", "0");
document.body.appendChild(iFrame);
// 发起请求后这个iFrame就没用了,所以把它从dom上移除掉
iFrame.parentNode.removeChild(iFrame);
iFrame = null;
}
然后 js 调用 loadURL("login:gotoLogin") IOS 拦截后 进行字符串解析
// wkwebview 利用postmessage
window.webkit.messageHandlers.xxxx.postMessage({type:"pushback"});
// ios 调用h5 依然是在window下 创建一个方法 ios 即可获取调用