JSBridge.js
3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
var appClient = null;
function AppClient(appObj, isAndroid) {
this.appObj = appObj;
this.isAndroid = isAndroid;
};
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
function toJson(str) {
var i = str.index('{')git
try {
var arr = str.split(2,str.length - 4)
console.log(arr)
} catch (e) {
return {}
}
}
layer.open({
content: "isAndroid:"+ isAndroid+ ",isiOS" + isiOS,
time: 2
})
AppClient.prototype.getERCode = function (jsonStr, getCallback, postCallback) {
var dataParams = "";
if(isJson(jsonStr)){
dataParams = JSON.parse(jsonStr);
}
var param = {
from: 'H5',
params: dataParams
};
if(this.isAndroid) {
window.WebViewJavascriptBridge.callHandler('getERCode', jsonStr, function (res) {
layer.open({
content: res,
time: 2
})
});
} else {
this.appObj.registerHandler("postERCOde", postCallback)
this.appObj.callHandler("getERCode", param, getCallback);
}
};
AppClient.prototype.getGPS = function (jsonStr, getCallback, postCallback) {
var dataParams = "";
if(isJson(jsonStr)){
dataParams = JSON.parse(jsonStr);
}
var iOSData = {
from: 'H5',
params: dataParams
};
if(this.isAndroid) {
window.WebViewJavascriptBridge.callHandler('getGPS', jsonStr, function (res) {
layer.open({
content: res,
time: 2
})
});
} else {
this.appObj.registerHandler("postGPS", postCallback)
this.appObj.callHandler("getGPS", param, getCallback);
}
// }
};
if(isAndroid || isiOS) {
function setupWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
if(isiOS){
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)
} else if (isAndroid) {
document.addEventListener('WebViewJavascriptBridgeReady', function (event) {
callback(WebViewJavascriptBridge)
}, false)
}
}
setupWebViewJavascriptBridge(function(bridge) {
if(isAndroid) {
appClient = new AppClient(window.WebViewJavascriptBridge, true);
layer.open({
content: JSON.stringify(appClient),
time: 2
})
bridge.init(function (message, responseCallback) {
responseCallback({'Javascript Responds': 'Wee!'})
})
}
if(isiOS) {
appClient = new AppClient(bridge, false);
}
// 此处可以调用一些init的方法
});
} else {
// appClient = new AppClient({}, false);
}