function setupWebViewJavascriptBridge(callback) {
try {
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)
} catch (e) {
alert(e)
}
}
IOS:
function iosMethod(method, params) {
setupWebViewJavascriptBridge(function (bridge) {
try {
if (params) {
bridge.callHandler(method, params)
} else {
bridge.callHandler(method)
}
} catch (e) {
alert(e)
}
})
}
例如:
和ios约定的回调方法名 挂载在window
window.scanResult = function(){}
iosMethod('scan')
Android:
和Android约定的回调方法名 挂载在window
window.scanResult = function(){}
window.android.scan()