转载:https://www.jianshu.com/p/0a85e75d4ee3
<!DOCTYPE html>
<html lang="en">
<head>
<title>JSBridge</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
</head>
<body>
<button onclick="myClick(1)">获取内容</button>
<button onclick="myClick(2)">返回首页</button>
<a href="tel:12345">打电话</a>
</body>
<script>
function myClick(actionType) {
window.WebViewJavascriptBridge.callHandler(
'jsCallNative', {
'actionType': actionType
}, function(responseData) {
alert(responseData);
}
);
}
//JS注册事件监听
function connectWebViewJavascriptBridge(callback) {
var u = navigator.userAgent;
var isApp = u.indexOf('myApp') > -1; // app打开
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; // android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
if (isApp && isAndroid) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener(
'WebViewJavascriptBridgeReady', function() {
callback(WebViewJavascriptBridge)
},
false
);
}
}
if (isApp && isiOS) {
if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() {
document.documentElement.removeChild(WVJBIframe)
}, 0)
}
}
connectWebViewJavascriptBridge(function(bridge) {
bridge.init(function(message, responseCallback) {});
})
</script>
</html>