UNPKG

@flyriselink/pai-sp-mobile

Version:

pai-sp-mobile 组件库

77 lines (72 loc) 2.06 kB
let userAgent = "" //#ifdef H5 //判断机型 userAgent = navigator.userAgent; //#endif function setupWebViewJavascriptBridge(callback) { //判断ios 还是Android if (/(iPhone|iPad|iPod|iOS)/i.test(userAgent)) { console.log("-->>>调用-ios") connectWebViewJavascriptBridgeIOS(callback) } else { console.log("-->>>调用-安卓") connectWebViewJavascriptBridgeAndroid(callback) } } //苹果注册事件监听 function connectWebViewJavascriptBridgeIOS(callback) { if (window.WebViewJavascriptBridge) { return callback(window.WebViewJavascriptBridge) } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback) } window.WVJBCallbacks = [callback] let WVJBIframe = document.createElement('iframe') WVJBIframe.style.display = 'none' WVJBIframe.src = 'https://__bridge_loaded__' document.documentElement.appendChild(WVJBIframe) setTimeout(() => { document.documentElement.removeChild(WVJBIframe) }, 0) } //安卓注册事件监听 function connectWebViewJavascriptBridgeAndroid(callback) { if (window.WebViewJavascriptBridge) { callback(WebViewJavascriptBridge) } else { document.addEventListener( 'WebViewJavascriptBridgeReady', function() { callback(WebViewJavascriptBridge) }, false ); } } export default { call(name, data, callback) { console.log("-->>>call-1") setupWebViewJavascriptBridge(function(bridge) { console.log("-->>>call-2:", name) bridge.callHandler(name, data, callback) }) }, register(names, callback) { setupWebViewJavascriptBridge(function(bridge) { if (!/(iPhone|iPad|iPod|iOS)/i.test(userAgent)) { console.log("初始化-安卓") bridge.init(function(message, responseCallback) { console.log("-->>>初始化-安卓-成功") responseCallback(''); }); } names.forEach(item => { bridge.registerHandler(item, (data, responseCallback) => { console.log("-->>>register:", item) callback(item, data, responseCallback) }); }); }) } }