1+ ; ( function ( ) {
2+ window . onerror = function ( err ) {
3+ console . log ( "page on error:" + err ) ;
4+ } ;
5+
6+ var browserType = {
7+ types : function ( ) {
8+ var u = window . navigator . userAgent ,
9+ app = window . navigator . appVersion ;
10+ return { //移动终端浏览器版本信息
11+ trident : u . indexOf ( 'Trident' ) > - 1 , //IE内核
12+ presto : u . indexOf ( 'Presto' ) > - 1 , //opera内核
13+ webKit : u . indexOf ( 'AppleWebKit' ) > - 1 , //苹果、谷歌内核
14+ gecko : u . indexOf ( 'Gecko' ) > - 1 && u . indexOf ( 'KHTML' ) == - 1 , //火狐内核
15+ mobile : ! ! u . match ( / A p p l e W e b K i t .* M o b i l e .* / ) || ! ! u . match ( / A p p l e W e b K i t / ) , //是否为移动终端
16+ mac : ! ! u . match ( / \( i [ ^ ; ] + ; ( U ; ) ? C P U .+ M a c O S X / ) , //ios终端
17+ android : u . indexOf ( 'Android' ) > - 1 || u . indexOf ( 'Linux' ) > - 1 , //android终端或者uc浏览器
18+ iPhone : u . indexOf ( 'iPhone' ) > - 1 || u . indexOf ( 'Mac' ) > - 1 , //是否为iPhone或者QQHD浏览器
19+ iPad : u . indexOf ( 'iPad' ) > - 1 , //是否iPad
20+ webApp : u . indexOf ( 'Safari' ) == - 1 //是否web应该程序,没有头部与底部
21+
22+ } ;
23+ } ( ) ,
24+
25+ language : ( window . navigator . browserLanguage || window . navigator . language ) . toLowerCase ( )
26+ } ;
27+
28+ function setupWebViewJavascriptBridge ( callback ) {
29+ if ( window . WebViewJavascriptBridge ) {
30+ return callback ( WebViewJavascriptBridge ) ;
31+ }
32+ if ( window . WVJBCallbacks ) {
33+ return window . WVJBCallbacks . push ( callback ) ;
34+ }
35+ window . WVJBCallbacks = [ callback ] ;
36+ var WVJBIframe = document . createElement ( 'iframe' ) ;
37+ WVJBIframe . style . display = 'none' ;
38+ if ( browserType . types . android ) {
39+ WVJBIframe . src = 'wvjbscheme://__BRIDGE_LOADED__' ;
40+ } else if ( browserType . types . mac || browserType . types . iPhone || browserType . types . iPad ) {
41+ WVJBIframe . src = 'https://__bridge_loaded__' ;
42+ }
43+ document . documentElement . appendChild ( WVJBIframe ) ;
44+ setTimeout ( function ( ) {
45+ document . documentElement . removeChild ( WVJBIframe )
46+ } , 0 ) ;
47+ }
48+
49+ function invoke ( handlerName , data , callback ) {
50+ if ( window . WebViewJavascriptBridge ) {
51+ window . WebViewJavascriptBridge . callHandler ( handlerName , data , callback ) ;
52+ } else {
53+ document . addEventListener (
54+ 'WebViewJavascriptBridgeReady' ,
55+ function ( ) {
56+ window . WebViewJavascriptBridge . callHandler ( handlerName , data , callback ) ;
57+ } ,
58+ false
59+ ) ;
60+ }
61+ }
62+
63+ setupWebViewJavascriptBridge ( function ( bridge ) {
64+ bridge . registerHandler ( 'NativeCallJS' , function ( data , responseCallback ) {
65+ var responseData = {
66+ 'Javascript Says' : 'Right back atcha!'
67+ } ;
68+ responseCallback ( responseData ) ;
69+ } ) ;
70+
71+ var doc = document ;
72+ var readyEvent = doc . createEvent ( 'Events' ) ;
73+ readyEvent . initEvent ( 'WebViewJavascriptBridgeReady' ) ;
74+ readyEvent . bridge = WebViewJavascriptBridge ;
75+ doc . dispatchEvent ( readyEvent ) ;
76+ } ) ;
77+
78+
79+ window . ccapi = {
80+ //设备信息
81+ deviceInfo : function ( data ) {
82+ invoke ( "deviceInfo" , {
83+ 'full' : data . full
84+ } , data . success ) ;
85+ } ,
86+
87+ //扫二维码
88+ scanQRCode : function ( data ) {
89+ invoke ( "scanQRCode" , {
90+ 'needResult' : data . needResult ,
91+ 'scanType' : data . scanType
92+ } , data . success ) ;
93+ } ,
94+ //选择图片
95+ chooseImage : function ( data ) {
96+ invoke ( "chooseImage" , {
97+ 'count' : data . count ,
98+ 'sizeType' : data . sizeType ,
99+ 'sourceType' : data . sourceType
100+ } , data . success ) ;
101+ }
102+
103+ } ;
104+ } ) ( ) ;
0 commit comments