new_bridge.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. var Bridge = function(){
  2. var isMobile = {
  3. Android: function() {
  4. return navigator.userAgent.match(/Android/i);
  5. },
  6. BlackBerry: function() {
  7. return navigator.userAgent.match(/BlackBerry/i);
  8. },
  9. iOS: function() {
  10. return navigator.userAgent.match(/iPhone|iPad|iPod/i);
  11. },
  12. Opera: function() {
  13. return navigator.userAgent.match(/Opera Mini/i);
  14. },
  15. Windows: function() {
  16. return navigator.userAgent.match(/IEMobile/i);
  17. },
  18. any: function() {
  19. return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
  20. }
  21. };
  22. function init_ios_bridge(callback)
  23. {
  24. if (window.WebViewJavascriptBridge) {
  25. return callback(WebViewJavascriptBridge);
  26. }
  27. if (window.WVJBCallbacks) {
  28. return window.WVJBCallbacks.push(callback);
  29. }
  30. window.WVJBCallbacks = [callback];
  31. var WVJBIframe = document.createElement('iframe');
  32. WVJBIframe.style.display = 'none';
  33. WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
  34. document.documentElement.appendChild(WVJBIframe);
  35. setTimeout(function() {
  36. document.documentElement.removeChild(WVJBIframe);
  37. }, 0);
  38. }
  39. function init_android_bridge()
  40. {
  41. if (window.WebViewJavascriptBridge)
  42. {
  43. WebViewJavascriptBridge.init();
  44. }
  45. else
  46. {
  47. document.addEventListener(
  48. 'WebViewJavascriptBridgeReady'
  49. , function() {
  50. WebViewJavascriptBridge.init();},
  51. false);
  52. }
  53. }
  54. function call_native_handler(handler, data,callback)
  55. {
  56. if (window.WebViewJavascriptBridge)
  57. {
  58. window.WebViewJavascriptBridge.callHandler(handler,
  59. data,
  60. callback);
  61. }
  62. else
  63. {
  64. document.addEventListener(
  65. 'WebViewJavascriptBridgeReady'
  66. , function()
  67. {
  68. window.WebViewJavascriptBridge.callHandler(
  69. handler,
  70. data,
  71. callback,
  72. false);
  73. }
  74. );
  75. }
  76. }
  77. function register_js_hander(name,callback)
  78. {
  79. if (window.WebViewJavascriptBridge)
  80. {
  81. window.WebViewJavascriptBridge.registerHandler(name,
  82. callback);
  83. }
  84. else
  85. {
  86. document.addEventListener(
  87. 'WebViewJavascriptBridgeReady'
  88. , function()
  89. {
  90. window.WebViewJavascriptBridge.registerHandler(name,callback);
  91. }
  92. );
  93. }
  94. }
  95. (function(){
  96. if(isMobile.iOS()) {
  97. init_ios_bridge(function(bridge) { });
  98. } else if (isMobile.Android) {
  99. init_android_bridge();
  100. } else {
  101. }
  102. })();
  103. return {
  104. call_native_handler:call_native_handler,
  105. register_js_hander:register_js_hander,
  106. isMobile:isMobile
  107. }
  108. };