123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- var Bridge = function(){
- var isMobile = {
- Android: function() {
- return navigator.userAgent.match(/Android/i);
- },
- BlackBerry: function() {
- return navigator.userAgent.match(/BlackBerry/i);
- },
- iOS: function() {
- return navigator.userAgent.match(/iPhone|iPad|iPod/i);
- },
- Opera: function() {
- return navigator.userAgent.match(/Opera Mini/i);
- },
- Windows: function() {
- return navigator.userAgent.match(/IEMobile/i);
- },
- any: function() {
- return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
- }
- };
- function init_ios_bridge(callback)
- {
- 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 = 'wvjbscheme://__BRIDGE_LOADED__';
- document.documentElement.appendChild(WVJBIframe);
- setTimeout(function() {
- document.documentElement.removeChild(WVJBIframe);
- }, 0);
- }
- function init_android_bridge()
- {
- if (window.WebViewJavascriptBridge)
- {
- WebViewJavascriptBridge.init();
- }
- else
- {
- document.addEventListener(
- 'WebViewJavascriptBridgeReady'
- , function() {
- WebViewJavascriptBridge.init();},
- false);
- }
- }
- function call_native_handler(handler, data,callback)
- {
- if (window.WebViewJavascriptBridge)
- {
- window.WebViewJavascriptBridge.callHandler(handler,
- data,
- callback);
- }
- else
- {
- document.addEventListener(
- 'WebViewJavascriptBridgeReady'
- , function()
- {
- window.WebViewJavascriptBridge.callHandler(
- handler,
- data,
- callback,
- false);
- }
- );
- }
- }
- function register_js_hander(name,callback)
- {
- if (window.WebViewJavascriptBridge)
- {
- window.WebViewJavascriptBridge.registerHandler(name,
- callback);
- }
- else
- {
- document.addEventListener(
- 'WebViewJavascriptBridgeReady'
- , function()
- {
- window.WebViewJavascriptBridge.registerHandler(name,callback);
- }
- );
- }
- }
- (function(){
- if(isMobile.iOS()) {
- init_ios_bridge(function(bridge) { });
- } else if (isMobile.Android) {
- init_android_bridge();
- } else {
- }
- })();
- return {
- call_native_handler:call_native_handler,
- register_js_hander:register_js_hander,
- isMobile:isMobile
- }
- };
|