浏览代码

jar包更新、终端判断、general-web-server服务端更新。

tik5213 9 年之前
父节点
当前提交
30535017fe

general-web-server/web/res/java-bak/MainActivity.java.net → general-web-server/java-bak/MainActivity.java.net


+ 0 - 9
general-web-server/web/WEB-INF/web.xml

@ -13,13 +13,4 @@
13 13
		<servlet-name>data</servlet-name>
14 14
		<url-pattern>/data</url-pattern>
15 15
	</servlet-mapping>
16
	<servlet>
17
		<servlet-name>file</servlet-name>
18
		<servlet-class>com.data.UploadFile</servlet-class>
19
		<load-on-startup>0</load-on-startup>
20
	</servlet>
21
	<servlet-mapping>
22
		<servlet-name>file</servlet-name>
23
		<url-pattern>/file</url-pattern>
24
	</servlet-mapping>
25 16
</web-app>

+ 3 - 7
general-web-server/web/biz/js/common/biz-mobile.js

@ -5,15 +5,11 @@ window.BizMobile = (function() {
5 5
	
6 6
	var BizMobile = (function(){
7 7
		return{
8
			/*openBrowser:function(url,err){
8
			openBrowser:function(url,err){
9 9
				execute("openBrowser",[url],err);
10 10
			},getImei:function(callback,err){
11 11
				storageCallback("getImei",callback);
12 12
				execute("getImei", [],err);
13
			}*/
14
			getImei:function(callback,err){
15
				alert("可以自定义插件。这里暂时调用框架里面的方法。");
16
				WadeMobile.getSysInfo(callback,"IMEI",err);
17 13
			}
18 14
		};
19 15
	})();
@ -21,8 +17,8 @@ window.BizMobile = (function() {
21 17
	function execute(action, args, error, success) {
22 18
        return WadeMobile.execute(action, args, error, success)
23 19
	}
24
	function storageCallback(action,callback,isEscape,isBase64) {
25
		WadeMobile.callback.storageCallback(action,callback,isEscape,isBase64)
20
	function storageCallback(action,callback) {
21
		WadeMobile.callback.storageCallback(action,callback)
26 22
	}
27 23
	return BizMobile;
28 24
})();

+ 0 - 49
general-web-server/web/html/index-test.html

@ -1,49 +0,0 @@
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
<html>
3
	<head>
4
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
		<title></title>
6
	</head>
7
	<body>
8
		<h1>你好!!!</h1>
9
		<button style="width: 200px;height: 100px;" id="sendAjaxPost">发送Post请求</button>
10
		<script type="text/javascript">
11
			var xhr;
12
			var btn = document.getElementById("sendAjaxPost");
13
			btn.onclick = function(){
14
				/* $.post('data', { name:'zhangsan1' }, function(response){ 
15
					  alert(response);
16
				})  */
17
				/* $.get("data?name=zhangsan001",function(data){
18
					alert(data);
19
				}); */
20
				/* for(var i in XMLHttpRequest){
21
					console.log(i + "---" + XMLHttpRequest[i]);
22
				} */
23
				//创建XMLHttpRequest对象
24
				xhr = new XMLHttpRequest();
25
				//注册回调函数
26
				xhr.onreadystatechange=callback;
27
				//第一个参数设置成post,第二个写url地址,第三个为是否采用异步方式
28
				xhr.open("POST","data",true);
29
				//post请求需要自己设置请求头
30
				xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
31
				//post请求
32
				xhr.send("name=lisi");
33
				
34
			}
35
			function callback(){
36
				//接收响应数据
37
				//判断对象状态是否交互完成,如果为4则交互完成
38
				if(xhr.readyState == 4){
39
					//判断对象状态是否交互成功,如果成功则为200
40
					if(xhr.status == 200){
41
						//接收数据,得到服务器输出的纯属文本数据
42
						var response = xhr.responseText;
43
						alert("返回的数据为:" + response);
44
					}
45
				}
46
			}
47
		</script>
48
	</body>
49
</html>

+ 27 - 16
general-web-server/web/html/myindex.html

@ -2,28 +2,33 @@
2 2
<html>
3 3
	<head>
4 4
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
		<meta content='True' name='HandheldFriendly' />
6
		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
5 7
		<title></title>
6
		<script src="../res/js/mobile-core.js"></script>
7
		<script src="../res/js/zepto.js"></script>
8
		<script src="../res/js/base64.js"></script>
9
		<script src="../res/js/jcl.js"></script>
10
		<script src="../res/js/wade-mobile.js"></script>
11
		<script src="../res/js/expand-mobile.js"></script>
12
		<script src="../biz/js/common/biz-mobile.js"></script>
8
		<script src="res/js/mobile-core.js"></script>
9
		<script src="res/js/zepto.js"></script>
10
		<script src="res/js/base64.js"></script>
11
		<script src="res/js/jcl.js"></script>
12
		<script src="res/js/wade-mobile.js"></script>
13
		<script src="res/js/expand-mobile.js"></script>
14
		<script src="biz/js/common/biz-mobile.js"></script>
13 15
	</head>
14 16
	<body>
15 17
		<script type="text/javascript">
16
			WadeMobile.tip("世界,你好!");
18
			WadeMobile.tip("你好,我好,大家好………………");
17 19
		</script>
18
		<div style="margin: 0 auto;"><h1>演示</h1></div>
19
		<br /><br />
20
		<button style="width:200px;height:100px;" id="openBrowser">打开浏览器(openBrowser)</button>
20
		<h1>你好!!!</h1>
21
		<button style="width:200px;height:100px;" id="openBrowser">打开浏览器(无回调)</button>
21 22
		<script type="text/javascript">
22 23
			var btn = document.getElementById("openBrowser");
23 24
			btn.onclick = function(){
24
				WadeMobile.openBrowser("http://3g.baidu.com");
25
				//WadeMobile.openBrowser("http://3g.baidu.com");
26
				 WadeMobile.getContacts(function(result){
27
					alert(result.toString());
28
				});
25 29
			}
26 30
		</script>
31
		
27 32
		<br /><br />
28 33
		<button style="width:200px;height:100px;" id="getImei">获取手机IMEI号(回调)</button>
29 34
		<script type="text/javascript">
@ -34,6 +39,8 @@
34 39
				});
35 40
			}
36 41
		</script>
42
		
43
		
37 44
		<br /><br />
38 45
		<button style="width: 200px;height: 100px;" id="sendAjaxPost">发送Post请求</button>
39 46
		<script type="text/javascript">
@ -44,7 +51,7 @@
44 51
				//注册回调函数
45 52
				xhr.onreadystatechange=callback;
46 53
				//第一个参数设置成post,第二个写url地址,第三个为是否采用异步方式
47
				xhr.open("POST","../data",true);
54
				xhr.open("POST","data",true);
48 55
				//post请求需要自己设置请求头
49 56
				xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
50 57
				//post请求
@ -63,13 +70,17 @@
63 70
				}
64 71
			}
65 72
		</script>
73
		
74
		
66 75
		<br /><br />
67
		<button style="width:200px;height:100px;" id="hrefBaidu">跳转到百度(href)</button>
76
		<button style="width:200px;height:100px;" id="goCustomerCentre">跳转到CustomerCentre</button>
68 77
		<script type="text/javascript">
69
			var btn = document.getElementById("hrefBaidu");
78
			var btn = document.getElementById("goCustomerCentre");
70 79
			btn.onclick = function(){
71
				window.location.href="http://3g.baidu.com";
80
				window.location.href="http://10.0.2.2:8080/start";
72 81
			}
73 82
		</script>
83
		<br /><br />
84
		<input type="text" style="width: 200px;height: 100px;">
74 85
	</body>
75 86
</html>

+ 307 - 303
general-web-server/web/res/js/expand-mobile.js

@ -1,303 +1,307 @@
1
/**
2
 * 提供给外围自行扩展和终端交互的js API。 
3
 */
4
window.ExpandMobile = (function() {
5
	
6
	var ExpandMobile = (function(){
7
		return{
8
			loadingStart:function(message,title,cancelable,err){ //加载进度条
9
				execute("loadingStart", [message,title,cancelable],err);
10
			},loadingStop:function(err){ //结束进度条
11
				execute("loadingStop", [],err);
12
			},getChoice:function(callback,options,values,title,iconName,err){
13
				storageCallback("getChoice", callback);
14
				execute("getChoice", [options,values,title,iconName], err);
15
			},tip:function(msg,type,err){
16
				if(type==undefined){
17
					type = 0;//0-短提示,-1长提示
18
				}
19
				execute("tip", [msg,type],err);
20
			},getDate:function(callback,date,format,err){
21
				if(format==undefined){
22
					format = "yyyy-MM-dd";
23
				}
24
				storageCallback("getDate",callback);
25
				execute("getDate", [date,format],err);
26
			},getContactsView:function(callback,data,setting,err){
27
				if(data==undefined){
28
					data = new Wade.DataMap();
29
				}
30
				if(setting==undefined){
31
					setting = new Wade.DataMap();
32
				}
33
				storageCallback("getContactsView",callback);
34
				execute("getContactsView", [data.toString(),setting.toString()],err);
35
			},getPhoto:function(callback,type,err){//获取照片
36
				if(type==undefined){
37
					type = 1;//0-Base64编码的字符串 1- 文件路径
38
				}
39
				storageCallback("getPhoto",callback);
40
				execute("getPhoto", [type],err);
41
			},getPicture:function(callback,type,err){//获取照片
42
				if(type==undefined){
43
					type = 1;//0-Base64编码的字符串 1- 文件路径
44
				}
45
				storageCallback("getPicture",callback);
46
				execute("getPicture", [type],err);
47
			},getBase64Picture:function(callback,path,err){
48
				storageCallback("getBase64Picture",callback);
49
				execute("getBase64Picture", [path],err);
50
			},getCompressPicture:function(callback,path,fileSize,quality,err){
51
				if(fileSize==undefined){
52
					fileSize = 10;//压缩到10K左右大小
53
				}
54
				if(quality==undefined){
55
					quality = 30;//图片质量30
56
				}
57
				storageCallback("getCompressPicture",callback);
58
				execute("getCompressPicture", [path,fileSize,quality],err);
59
			},beep:function(count,err){
60
				execute("beep", [count],err);
61
			},shock:function(time,err){
62
				execute("shock", [time],err);
63
			},call:function(sn,autoCall,err){
64
				if(autoCall==undefined){
65
					autoCall = false;// false-跳转至拨打界面,true-直接拨打
66
				}
67
				execute("call", [sn,autoCall],err);
68
			},sms:function(sn,msg,autoSms,err){
69
				if(autoSms==undefined){
70
					autoSms = false;// false-跳转至短信界面,true-直接短信
71
				}
72
				execute("sms", [sn,msg,autoSms],err);
73
			},openApp:function(appId,urlParams,installUrl,err){
74
				execute("openApp", [appId,urlParams,installUrl],err);
75
			},showKeyBoard:function(type,err){
76
				execute("showKeyBoard", [type],err);
77
			},hideKeyBoard:function(err){
78
				execute("hideKeyBoard", [],err);
79
			},setTitleView:function(title,err){
80
				execute("setTitleText", [title],err);
81
			},getSysInfo:function(callback,key,err){//TELNUMBER|IMEI|IMSI|SDKVERSION|OSVERSION|PLATFORM|SIMNUMBER
82
				storageCallback("getSysInfo",callback);
83
				execute("getSysInfo", [key],err);
84
			},getNetInfo:function(callback,key,err){//MAC|IP
85
				storageCallback("getNetInfo",callback);
86
				execute("getNetInfo", [key],err);
87
			},getDirection:function(callback,type,err){//APP_FILES|APP_CACHE|SDCARD_APP_PATH|SDCARD_ROOT|SDCARD_APP_FILES
88
				storageCallback("getDirection",callback);
89
				execute("getDirection", [type],err);
90
			},explorer:function(callback,fileType,initPath){
91
				storageCallback("explorer",callback);
92
				execute("explorer",[callback,fileType,initPath]);
93
			},httpDownloadFile : function(targetFilePath,fileName,callback,suc,err){//客户端直接访问服务端进行下载
94
				storageCallback("httpDownloadFile",callback);
95
				execute("httpDownloadFile",[targetFilePath,fileName],suc,err);
96
			},location:function(callback,err){
97
				storageCallback("location",callback);
98
				execute("location",[],err);
99
			},markMap:function(callback,markParam,isSelect,isJump,isEscape,err){
100
				if (typeof(markParam)=="object" && (markParam instanceof Wade.DataMap)) {
101
					var markParams = new Wade.DatasetList();
102
					markParams.add(markParam);
103
					markParam = markParams;
104
				}
105
				storageCallback("markMap", callback, isEscape);
106
				execute("markMap", [markParam.toString(),isSelect,isJump,isEscape,err]);
107
			},selectLocation:function(callback,isLocation,longitude,latitude,scale){
108
				storageCallback("selectLocation",callback);
109
				execute("selectLocation",[isLocation, longitude, latitude, scale]);
110
			},scanQrCode:function(callback){
111
				storageCallback("scanQrCode",callback);
112
				execute("scanQrCode",[]);
113
			},createQrCode:function(callback,content){
114
				storageCallback("createQrCode",callback);
115
				execute("createQrCode",[content]);
116
			},httpGet:function(callback,url,isEscape,encode){
117
				storageCallback("httpGet",callback,isEscape);
118
				execute("httpGet",[url,isEscape,encode]);
119
			},removeMemoryCache:function(key,err){
120
				execute("removeMemoryCache",[key],err);
121
			},clearMemoryCache:function(err){
122
				execute("clearMemoryCache",[],err);
123
			},setMemoryCache:function(key,value,err){
124
				execute("setMemoryCache",[key,value],err);
125
			},getMemoryCache:function(callback,key,defValue,err){
126
				storageCallback("getMemoryCache",callback);
127
				execute("getMemoryCache",[key,defValue],err);
128
			},setOfflineCache:function(key,value,err){
129
				execute("setOfflineCache", [key,value],err);
130
			},getOfflineCache:function(callback,key,defValue,err){
131
				storageCallback("getOfflineCache",callback);
132
				return execute("getOfflineCache", [key,defValue],err);
133
			},removeOfflineCache:function(key,err){
134
				execute("removeOfflineCache", [key],err);
135
			},clearOfflineCache:function(err){
136
				execute("clearOfflineCache", [],err);
137
			},writeFile:function(content,fileName,type,err){
138
				if(type==undefined ){
139
					type =1;
140
				}
141
				execute("writeFile",[content,fileName,type],err);
142
			},appendFile:function(content,fileName,type,err){
143
				if(type==undefined){
144
					type =1;
145
				}
146
				execute("appendFile",[content,fileName,type],err);
147
			},readFile:function(callback,fileName,type,isEscape,err){
148
				if(type==undefined){
149
					type =1;
150
				}
151
				if(isEscape==undefined){
152
					isEscape=true;
153
				}
154
				storageCallback("readFile",callback,isEscape);
155
				execute("readFile",[fileName,type,isEscape],err);
156
			},openFile:function(filename,flag,err){
157
				if(flag==undefined){
158
					flag =1;
159
				}
160
				execute("openFile", [filename,flag],err);
161
			},deleteFile:function(filename,flag,err){
162
				if(flag==undefined){
163
					flag =1;
164
				}
165
				execute("deleteFile", [filename,flag],err);
166
			},getAllFile:function(callback,type,err){
167
				if(type==undefined){
168
					type=1;
169
				}
170
				storageCallback("getAllFile", callback);
171
				execute("getAllFile", [type],err);
172
			},cleanResource:function(type,err){
173
				execute("cleanResource",[type],err);
174
			},shareByBluetooth:function(err){
175
				execute("shareByBluetooth", [],err);
176
			},openBrowser:function(url,err){
177
				execute("openBrowser",[url],err);
178
			},setSmsListener:function(callback,telString,isEscape,err){
179
				if(isEscape == undefined ){
180
					isEscape = true;
181
				}
182
				storageCallback("setSmsListener", callback , isEscape);
183
				execute("setSmsListener", [telString,isEscape],err);
184
			},audioRecord:function(callback,auto,err){
185
				if(auto == undefined) {
186
					auto = false; //false-按住录音,true-自动录音
187
				}
188
				storageCallback("audioRecord",callback);
189
				execute("audioRecord", [auto],err);
190
			},audioPlay:function(audioPath,hasRipple,err){
191
				if (hasRipple == undefined) {
192
					hasRipple = true; //true-弹出波纹,false-无效果
193
				}
194
				execute("audioPlay",[audioPath,hasRipple],err);
195
			},logCat:function(msg,title,err){
196
				//将日志输出至LogCat控制台(异步)
197
				execute("logCat",[msg,title],err);
198
			},execSQL:function(dbName,sql,bindArgs,callback,err){
199
				if(bindArgs==undefined){
200
					bindArgs = new Array();
201
				}
202
				storageCallback("execSQL",callback);
203
				execute("execSQL",[dbName,sql,bindArgs],err);
204
			},insert:function(dbName,table,datas,callback,err){
205
				if(datas==undefined){
206
					datas = new Wade.DataMap();
207
				}
208
				storageCallback("insert",callback);
209
				execute("insert",[dbName,table,datas.toString()],err);
210
			},delete:function(dbName,table,datas,callback,err){
211
				if(datas==undefined){
212
					datas = new Wade.DataMap();
213
				}
214
				storageCallback("delete",callback);
215
				execute("delete",[dbName,table,datas.toString()],err);
216
			},update:function(dbName,table,datas,conds,callback,err){
217
				if(datas==undefined){
218
					datas = new Wade.DataMap();
219
				}
220
				if(conds==undefined){
221
					conds = new Wade.DataMap();
222
				}
223
				storageCallback("update",callback);
224
				execute("update",[dbName,table,datas.toString(),conds.toString()],err);
225
			},select:function(dbName,table,columns,conds,callback,err){
226
				if(columns==undefined){
227
					columns = new Array();
228
				}
229
				if(conds==undefined){
230
					conds = new Wade.DataMap();
231
				}
232
				storageCallback("select",callback);
233
				execute("select",[dbName,table,columns,conds.toString()],err);
234
			},selectFirst:function(dbName,table,columns,conds,callback,err){
235
				if(columns==undefined){
236
					columns = new Array();
237
				}
238
				if(conds==undefined){
239
					conds = new Wade.DataMap();
240
				}
241
				storageCallback("selectFirst",callback);
242
				execute("selectFirst",[dbName,table,columns,conds.toString()],err);
243
			},registerForPush:function(account,callback,err){
244
				storageCallback("registerForPush",callback);
245
				execute("registerForPush",[account],err);
246
			},unregisterForPush:function(callback){
247
				storageCallback("unregisterForPush",callback);
248
				execute("unregisterForPush", []);
249
			},sendText:function(account,content,callback,err){
250
				storageCallback("sendText",callback);
251
				execute("sendText", [account,content],err);
252
			},setCallbackForPush:function(callback){
253
				execute("setCallbackForPush", [callback]);
254
			},registerForPushWithYunba:function(account,callback,err){
255
				storageCallback("registerForPushWithYunba",callback);
256
				execute("registerForPushWithYunba",[account],err);
257
			},unregisterForPushWithYunba:function(callback){
258
				storageCallback("unregisterForPushWithYunba",callback);
259
				execute("unregisterForPushWithYunba", []);
260
			},sendTextWithYunba:function(account,content,callback,err){
261
				storageCallback("sendTextWithYunba",callback);
262
				execute("sendTextWithYunba", [account,content],err);
263
			},setCallbackForPushWithYunba:function(callback){
264
				execute("setCallbackForPushWithYunba", [callback]);
265
			},aliPay:function(tradeNo,subject,body,price,callback,err){
266
				storageCallback("aliPay",callback);
267
				execute("aliPay",[tradeNo,subject,body,price],err);	
268
			},uploadWithServlet:function(filePath,dataAction,param,callback,err){
269
				if(typeof(filePath)=="string"){
270
					filePath = [filePath];
271
				}
272
				storageCallback("uploadWithServlet",callback);
273
				execute("uploadWithServlet",[filePath,dataAction,param],err);	
274
			},downloadWithServlet:function(savePath,dataAction,param,callback,err){
275
				storageCallback("downloadWithServlet",callback);
276
				execute("downloadWithServlet",[savePath,dataAction,param],err);	
277
			},uploadFile:function(filePath,servletUrl,callback,err){
278
				storageCallback("uploadFile",callback);
279
				execute("uploadFile",[filePath,servletUrl],err);	
280
			},downloadFile:function(savePath,servletUrl,callback,err){
281
				storageCallback("downloadFile",callback);
282
				execute("downloadFile",[savePath,servletUrl],err);	
283
			},recordVideo:function(callback,compressRatio,timeLimit,err){
284
				storageCallback("recordVideo",callback);
285
				execute("recordVideo",[compressRatio,timeLimit],err);	
286
			},playVideo:function(videoPath,callback,err){
287
				storageCallback("playVideo",callback);
288
				execute("playVideo",[videoPath],err);	
289
			},getContacts:function(callback,err){
290
				storageCallback("getContacts",callback);
291
				execute("getContacts",[], err);	
292
			}
293
		};
294
	})();
295
	Wade.extend(WadeMobile,ExpandMobile);//属性合并,ExpandMobile累加到WadeMobile中
296
	function execute(action, args, error, success) {
297
        return WadeMobile.execute(action, args, error, success)
298
	}
299
	function storageCallback(action,callback,isEscape,isBase64) {
300
		WadeMobile.callback.storageCallback(action,callback,isEscape,isBase64)
301
	}
302
	return ExpandMobile;
303
})();
1
/**
2
 * 提供给外围自行扩展和终端交互的js API。 
3
 */
4
window.ExpandMobile = (function() {
5
	
6
	var ExpandMobile = (function(){
7
		return{
8
			loadingStart:function(message,title,cancelable,err){ //加载进度条
9
				execute("loadingStart", [message,title,cancelable],err);
10
			},loadingStop:function(err){ //结束进度条
11
				execute("loadingStop", [],err);
12
			},getChoice:function(callback,options,values,title,iconName,err){
13
				storageCallback("getChoice", callback);
14
				execute("getChoice", [options,values,title,iconName], err);
15
			},tip:function(msg,type,err){
16
				if(type==undefined){
17
					type = 0;//0-短提示,-1长提示
18
				}
19
				execute("tip", [msg,type],err);
20
			},getDate:function(callback,date,format,err){
21
				if(format==undefined){
22
					format = "yyyy-MM-dd";
23
				}
24
				storageCallback("getDate",callback);
25
				execute("getDate", [date,format],err);
26
			},getContactsView:function(callback,data,setting,err){
27
				if(data==undefined){
28
					data = new Wade.DataMap();
29
				}
30
				if(setting==undefined){
31
					setting = new Wade.DataMap();
32
				}
33
				storageCallback("getContactsView",callback);
34
				execute("getContactsView", [data.toString(),setting.toString()],err);
35
			},getPhoto:function(callback,type,err){//获取照片
36
				if(type==undefined){
37
					type = 1;//0-Base64编码的字符串 1- 文件路径
38
				}
39
				storageCallback("getPhoto",callback);
40
				execute("getPhoto", [type],err);
41
			},getPicture:function(callback,type,err){//获取照片
42
				if(type==undefined){
43
					type = 1;//0-Base64编码的字符串 1- 文件路径
44
				}
45
				storageCallback("getPicture",callback);
46
				execute("getPicture", [type],err);
47
			},transImageToBase64:function(callback,path,err){
48
				storageCallback("transImageToBase64",callback);
49
				execute("transImageToBase64", [path],err);
50
			},compressImage:function(callback,path,fileSize,quality,err){
51
				if(fileSize==undefined){
52
					fileSize = 10;//压缩到10K左右大小
53
				}
54
				if(quality==undefined){
55
					quality = 30;//图片质量30
56
				}
57
				storageCallback("compressImage",callback);
58
				execute("compressImage", [path,fileSize,quality],err);
59
			},beep:function(count,err){
60
				execute("beep", [count],err);
61
			},shock:function(time,err){
62
				execute("shock", [time],err);
63
			},call:function(sn,autoCall,err){
64
				if(autoCall==undefined){
65
					autoCall = false;// false-跳转至拨打界面,true-直接拨打
66
				}
67
				execute("call", [sn,autoCall],err);
68
			},sms:function(sn,msg,autoSms,err){
69
				if(autoSms==undefined){
70
					autoSms = false;// false-跳转至短信界面,true-直接短信
71
				}
72
				execute("sms", [sn,msg,autoSms],err);
73
			},openApp:function(appId,urlParams,installUrl,err){
74
				execute("openApp", [appId,urlParams,installUrl],err);
75
			},showKeyBoard:function(type,err){
76
				execute("showKeyBoard", [type],err);
77
			},hideKeyBoard:function(err){
78
				execute("hideKeyBoard", [],err);
79
			},setTitleView:function(title,err){
80
				execute("setTitleText", [title],err);
81
			},getSysInfo:function(callback,key,err){//TELNUMBER|IMEI|IMSI|SDKVERSION|OSVERSION|PLATFORM|SIMNUMBER
82
				storageCallback("getSysInfo",callback);
83
				execute("getSysInfo", [key],err);
84
			},getNetInfo:function(callback,key,err){//MAC|IP
85
				storageCallback("getNetInfo",callback);
86
				execute("getNetInfo", [key],err);
87
			},explorer:function(callback,fileType,initPath){
88
				storageCallback("explorer",callback);
89
				execute("explorer",[callback,fileType,initPath]);
90
			},httpDownloadFile : function(targetFilePath,fileName,callback,suc,err){//客户端直接访问服务端进行下载
91
				storageCallback("httpDownloadFile",callback);
92
				execute("httpDownloadFile",[targetFilePath,fileName],suc,err);
93
			},location:function(callback,err){
94
				storageCallback("location",callback);
95
				execute("location",[],err);
96
			},markMap:function(callback,markParam,isSelect,isJump,err){
97
				if (typeof(markParam)=="object" && (markParam instanceof Wade.DataMap)) {
98
					var markParams = new Wade.DatasetList();
99
					markParams.add(markParam);
100
					markParam = markParams;
101
				}
102
				storageCallback("markMap", callback);
103
				execute("markMap", [markParam.toString(),isSelect,isJump,err]);
104
			},selectLocation:function(callback,isLocation,longitude,latitude,scale){
105
				storageCallback("selectLocation",callback);
106
				execute("selectLocation",[isLocation, longitude, latitude, scale]);
107
			},scanQrCode:function(callback){
108
				storageCallback("scanQrCode",callback);
109
				execute("scanQrCode",[]);
110
			},createQrCode:function(callback,content){
111
				storageCallback("createQrCode",callback);
112
				execute("createQrCode",[content]);
113
			},httpGet:function(callback,url,encode){
114
				storageCallback("httpGet",callback);
115
				execute("httpGet",[url,encode]);
116
			},removeMemoryCache:function(key,err){
117
				execute("removeMemoryCache",[key],err);
118
			},clearMemoryCache:function(err){
119
				execute("clearMemoryCache",[],err);
120
			},setMemoryCache:function(key,value,err){
121
				execute("setMemoryCache",[key,value],err);
122
			},getMemoryCache:function(callback,key,defValue,err){
123
				storageCallback("getMemoryCache",callback);
124
				execute("getMemoryCache",[key,defValue],err);
125
			},setOfflineCache:function(key,value,err){
126
				execute("setOfflineCache", [key,value],err);
127
			},getOfflineCache:function(callback,key,defValue,err){
128
				storageCallback("getOfflineCache",callback);
129
				return execute("getOfflineCache", [key,defValue],err);
130
			},removeOfflineCache:function(key,err){
131
				execute("removeOfflineCache", [key],err);
132
			},clearOfflineCache:function(err){
133
				execute("clearOfflineCache", [],err);
134
			},writeFile:function(content,fileName,type,isSdcard,err){
135
				execute("writeFile",[content,fileName,type,isSdcard],err);
136
			},appendFile:function(content,fileName,type,isSdcard,err){
137
				execute("appendFile",[content,fileName,type,isSdcard],err);
138
			},readFile:function(callback,fileName,type,isSdcard,isEscape,err){
139
				storageCallback("readFile",callback,isEscape);
140
				execute("readFile",[fileName,type,isSdcard,isEscape],err);
141
			},openFile:function(filename,type,isSdcard,err){
142
				execute("openFile", [filename,type,isSdcard],err);
143
			},deleteFile:function(filename,type,isSdcard,err){
144
				execute("deleteFile", [filename,type,isSdcard],err);
145
			},getAllFile:function(callback,filename,type,isSdcard,err){
146
				storageCallback("getAllFile", callback);
147
				execute("getAllFile", [filename,type,isSdcard],err);
148
			},getRelativePath:function(callback,filename,type,err){
149
				storageCallback("getRelativePath",callback);
150
				execute("getRelativePath", [filename,type],err);
151
			},cleanResource:function(type,isSdcard,err){
152
				execute("cleanResource",[type,isSdcard],err);
153
			},shareByBluetooth:function(err){
154
				execute("shareByBluetooth", [],err);
155
			},openBrowser:function(url,err){
156
				execute("openBrowser",[url],err);
157
			},setSmsListener:function(callback,telString,err){
158
				storageCallback("setSmsListener", callback);
159
				execute("setSmsListener", [telString],err);
160
			},audioRecord:function(callback,auto,err){
161
				if(auto == undefined) {
162
					auto = false; //false-按住录音,true-自动录音
163
				}
164
				storageCallback("audioRecord",callback);
165
				execute("audioRecord", [auto],err);
166
			},audioPlay:function(audioPath,hasRipple,err){
167
				if (hasRipple == undefined) {
168
					hasRipple = true; //true-弹出波纹,false-无效果
169
				}
170
				execute("audioPlay",[audioPath,hasRipple],err);
171
			},logCat:function(msg,title,err){
172
				//将日志输出至LogCat控制台(异步)
173
				execute("logCat",[msg,title],err);
174
			},execSQL:function(dbName,sql,bindArgs,limit,offset,callback,err){
175
				if(bindArgs == undefined){
176
					bindArgs = new Wade.DataMap();
177
				}
178
				if(limit == null)
179
					limit = "";
180
				else if(!isNaN(limit))	
181
					limit = "\"" + limit + "\"";
182
				
183
				if(offset == null)	
184
					offset = "";
185
				else if(!isNaN(offset))
186
					offset = "\"" + offset + "\"";
187
				
188
				storageCallback("execSQL",callback);
189
				execute("execSQL",[dbName,sql,bindArgs.toString(),limit,offset],err);
190
			},insert:function(dbName,table,datas,callback,err){
191
				if(datas==undefined){
192
					datas = new Wade.DataMap();
193
				}
194
				storageCallback("insert",callback);
195
				execute("insert",[dbName,table,datas.toString()],err);
196
			},delete:function(dbName,table,condSQL,conds,callback,err){
197
				if(conds==undefined){
198
					conds = new Wade.DataMap();
199
				}
200
				storageCallback("delete",callback);
201
				execute("delete",[dbName,table,condSQL,conds.toString()],err);
202
			},update:function(dbName,table,datas,condSQL,conds,callback,err){
203
				if(datas==undefined){
204
					datas = new Wade.DataMap();
205
				}
206
				if(conds==undefined){
207
					conds = new Wade.DataMap();
208
				}
209
				storageCallback("update",callback);
210
				execute("update",[dbName,table,datas.toString(),condSQL,conds.toString()],err);
211
			},select:function(dbName,table,columns,condSQL,conds,limit,offset,callback,err){
212
				if(columns == null){
213
					columns = new Array();
214
				}
215
				if(conds == null){
216
					conds = new Wade.DataMap();
217
				}
218
				if(limit == null)
219
					limit = "";
220
				else if(!isNaN(limit))	
221
					limit = "\"" + limit + "\"";
222
				
223
				if(offset == null)	
224
					offset = "";
225
				else if(!isNaN(offset))
226
					offset = "\"" + offset + "\"";
227
				
228
				storageCallback("select",callback);
229
				execute("select",[dbName,table,columns,condSQL,conds.toString(),limit,offset],err);
230
			},selectFirst:function(dbName,table,columns,condSQL,conds,callback,err){
231
				this.select(dbName,table,columns,condSQL,conds,1,0,callback,err);
232
			},registerForPush:function(account,callback,err){
233
				storageCallback("registerForPush",callback);
234
				execute("registerForPush",[account],err);
235
			},unregisterForPush:function(callback){
236
				storageCallback("unregisterForPush",callback);
237
				execute("unregisterForPush", []);
238
			},sendText:function(account,content,callback,err){
239
				storageCallback("sendText",callback);
240
				execute("sendText", [account,content],err);
241
			},setCallbackForPush:function(callback){
242
				execute("setCallbackForPush", [callback]);
243
			},registerForPushWithYunba:function(account,callback,err){
244
				storageCallback("registerForPushWithYunba",callback);
245
				execute("registerForPushWithYunba",[account],err);
246
			},unregisterForPushWithYunba:function(callback){
247
				storageCallback("unregisterForPushWithYunba",callback);
248
				execute("unregisterForPushWithYunba", []);
249
			},sendTextWithYunba:function(account,content,callback,err){
250
				storageCallback("sendTextWithYunba",callback);
251
				execute("sendTextWithYunba", [account,content],err);
252
			},setCallbackForPushWithYunba:function(callback){
253
				execute("setCallbackForPushWithYunba", [callback]);
254
			},aliPay:function(tradeNo,subject,body,price,callback,err){
255
				storageCallback("aliPay",callback);
256
				execute("aliPay",[tradeNo,subject,body,price],err);	
257
			},uploadWithServlet:function(filePath,dataAction,param,callback,err){
258
				if(typeof(filePath)=="string"){
259
					filePath = [filePath];
260
				}
261
				storageCallback("uploadWithServlet",callback);
262
				execute("uploadWithServlet",[filePath,dataAction,param],err);	
263
			},downloadWithServlet:function(savePath,dataAction,param,callback,err){
264
				storageCallback("downloadWithServlet",callback);
265
				execute("downloadWithServlet",[savePath,dataAction,param],err);	
266
			},uploadFile:function(filePath,servletUrl,callback,err){
267
				storageCallback("uploadFile",callback);
268
				execute("uploadFile",[filePath,servletUrl],err);	
269
			},downloadFile:function(savePath,servletUrl,callback,err){
270
				storageCallback("downloadFile",callback);
271
				execute("downloadFile",[savePath,servletUrl],err);	
272
			},recordVideo:function(callback,compressRatio,timeLimit,err){
273
				storageCallback("recordVideo",callback);
274
				execute("recordVideo",[compressRatio,timeLimit],err);	
275
			},playVideo:function(videoPath,callback,err){
276
				storageCallback("playVideo",callback);
277
				execute("playVideo",[videoPath],err);	
278
			},getContacts:function(callback,err){
279
				storageCallback("getContacts",callback);
280
				execute("getContacts",[], err);	
281
			},openKeyboard:function(value,err){
282
				execute("openKeyboard",[value],err);
283
			},setScreenLock:function(dataParam,callback,err){
284
				storageCallback("setScreenLock",callback);
285
				execute("setScreenLock",[dataParam],err);
286
			},getScreenLockState:function(callback,err){
287
				storageCallback("getScreenLockState",callback);
288
				execute("getScreenLockState",[],err);
289
			},screenUnlock:function(forgetPageAction,callback,err){
290
				storageCallback("screenUnlock",callback);
291
				execute("screenUnlock",[forgetPageAction],err);
292
			},initNfc:function(cmds,callbackName,err) {
293
				execute("initNfc", [cmds, callbackName], err);
294
			}
295
		};
296
	})();
297
	
298
	Wade.extend(WadeMobile,ExpandMobile);//属性合并,ExpandMobile累加到WadeMobile中
299
	function execute(action, args, error, success) {
300
        return WadeMobile.execute(action, args, error, success)
301
	}
302
	function storageCallback(action,callback) {
303
		WadeMobile.callback.storageCallback(action,callback)
304
	}
305
	
306
	return ExpandMobile;
307
})();

+ 20 - 8
general-web-server/web/res/js/jcl.js

@ -520,7 +520,8 @@
520 520
			if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
521 521
				.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
522 522
				.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
523

523
						
524
				//console.log("########data");
524 525
				//先尝试使用浏览器内部JSON解析器
525 526
				return window.JSON && window.JSON.parse ?
526 527
					window.JSON.parse( data ) :
@ -581,7 +582,8 @@
581 582
			str=str.replace(/\\\":(null|undefined)(,|})/g,"\\\":\\\"\\\"$2"); //处理KEY值里放IData或IDataset的toString串里的空值
582 583
			str=str.replace(/\\\":(true|false)(,|})/g,"\\\":\\\"$1\\\"$2"); //处理KEY值里放IData或IDataset的toString串里的布尔值
583 584
			str=str.replace(/\\\":(-)?([0-9\.]+)(,|})/g,"\\\":\\\"$1$2\\\"$3"); //处理KEY值里放IData或IDataset的toString串里的数值
584
			str=str.replace(/\\\"/g,"!~b~!"); //把字符串中原有的 \" 替换,处理KEY值里放IData或IDataset的toString串的情况
585
			//ybf326
586
			//str=str.replace(/\\\"/g,"!~b~!"); //把字符串中原有的 \" 替换,处理KEY值里放IData或IDataset的toString串的情况
585 587
			
586 588
			str=str.replace(/:(null|undefined)(,|})/g,":\"\"$2");    //将null或undefined替换为空字符
587 589
			str=str.replace(/:(true|false)(,|})/g,":\"$1\"$2");      //将true|false替换为字符串
@ -618,9 +620,10 @@
618 620
					case "\n":
619 621
						out +="\u005Cn";
620 622
						break;
621
					case "\"":
623
					//ybf326
624
					/*case "\"":
622 625
						out +="!~a~!";
623
						break;
626
						break;*/
624 627
					default:
625 628
						out += chr;
626 629
					break;
@ -628,14 +631,14 @@
628 631
			}
629 632
			str = out;
630 633
		
634
			//ybf326
635
			/*
631 636
			//第一次替换处理JSON格式的双引号字符
632 637
			str=str.replace(/{!~a~!/g,"{\""); //处理 {"
633 638
			str=str.replace(/!~a~!}/g,"\"}");  //处理 "}
634 639
			str=str.replace(/!~a~!,!~a~!/g,"\",\"");   //处理 ","
635 640
			str=str.replace(/!~a~!:!~a~!/g,"\":\"");   //处理 ":"
636
			str=str.replace(/!~a~!:\[!~a~!/g,"\":[\"");   //处理 ":["
637 641
			str=str.replace(/!~a~!:\[/g,"\":[");   //处理 ":[
638
			str=str.replace(/!~a~!\],!~a~!/g,"\"],\"");   //处理 "],"
639 642
			str=str.replace(/\],!~a~!/g,"],\"");   //处理 ],"
640 643
			str=str.replace(/!~a~!:{/g,"\":{");    //处理 ":{
641 644
			str=str.replace(/},!~a~!/g,"},\"");    //处理 },"
@ -644,6 +647,7 @@
644 647
			str=str.replace(/\u005C!~a~!/g,"\u005C\""); //本身就有\的还原
645 648
			str=str.replace(/!~a~!/g,"\u005C\"");    //其它的加上\符号
646 649
			str=str.replace(/!~b~!/g,"\u005C\"");   //恢复 !~b~! 为 \"
650
			*/
647 651
			
648 652
			//str=str.replace(/\r/g,"\u005Cr");		
649 653
			//str=str.replace(/\n/g,"\u005Cn");	
@ -681,6 +685,10 @@
681 685
					case "\"":
682 686
						out +="\u005C\"";
683 687
						break;
688
					//ybf326
689
					case "\\":
690
						out += "\u005C\u005C";
691
						break;
684 692
					default:
685 693
						out += chr;
686 694
					break;
@ -714,7 +722,9 @@
714 722
		},
715 723
		parseString:function(str){
716 724
			str=$.parseJsonString(str);
717
			(new Function("this.parseObject(" +str+")")).apply(this);
725
			//console.log("#####this.parseObject");
726
			return window.JSON && window.JSON.parse ? this.parseObject(window.JSON.parse(str)) 
727
					: (new Function("this.parseObject(" +str+")")).apply(this);
718 728
			//if(typeof(o)=="object")this.parseObject(o);
719 729
		},
720 730
		parseObject:function(obj){
@ -803,7 +813,9 @@
803 813
		},	
804 814
		parseString:function(str){
805 815
			str=$.parseJsonString(str);
806
			(new Function("this.parseArray(" +str+")")).apply(this);	
816
			//console.log("#####this.parseArray");
817
			return window.JSON && window.JSON.parse ? this.parseArray(window.JSON.parse(str)) : 
818
				(new Function("this.parseArray(" +str+")")).apply(this);	
807 819
		},
808 820
		parseArray:function(o){
809 821
			for(var i=0;i<o.length;i++){

+ 349 - 353
general-web-server/web/res/js/wade-mobile.js

@ -1,353 +1,349 @@
1
window.Mobile = window.WadeMobile = (function(Wade,Base64) {
2
	//终端类型,a为android,i为ios
3
    var terminalType = (function(){
4
		var sUserAgent = navigator.userAgent.toLowerCase();
5
		var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
6
		var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
7
		var bIsAndroid = sUserAgent.match(/android/i) == "android";
8
		var bIsWinphone = sUserAgent.match(/windows phone /i) == "windows phone " || sUserAgent.match(/windows phone os /i) == "windows phone os ";
9
		if(bIsAndroid){
10
			return "a";
11
		}else if(bIsIpad||bIsIphoneOs){
12
			return "i";
13
		}else if(bIsWinphone){
14
			return "w";
15
		}else{
16
			return null;
17
		}
18
	})();
19
	
20
	WadeMobile = (function(){
21
        return{
22
        	isAndroid:function(){
23
        		return terminalType=='a';
24
        	},isIOS:function(){
25
        		return terminalType=='i';
26
        	},isWP:function(){
27
        		return terminalType=='w';
28
        	},isApp:function(){//判断是否是APP应用
29
				return terminalType!=null;
30
        	},getSysInfo:function(callback,key,err){//TELNUMBER|IMEI|IMSI|SDKVERSION|OSVERSION|PLATFORM|SIMNUMBER
31
				WadeMobile.callback.storageCallback("getSysInfo",callback);
32
				execute("getSysInfo", [key],err);
33
			},close:function(confirm,err){
34
				if(typeof(confirm)!="boolean"){
35
					confirm = true;
36
				}
37
				execute("close", [confirm],err);
38
			},httpRequest:function(callback,requestUrl,isEscape,encode,conTimeout,readTimeout,err){
39
				if (isEscape == undefined) {
40
					isEscape = true;
41
				}
42
				if(terminalType=="i"){
43
					requestUrl = encodeURIComponent(requestUrl);
44
				}
45
				WadeMobile.callback.storageCallback("httpRequest",callback,isEscape);
46
				execute("httpRequest", [requestUrl,isEscape,encode,conTimeout,readTimeout],err);
47
			},dataRequest:function(callback,dataAction,param,isEscape,encode,conTimeout,readTimeout,err){
48
				if (isEscape == undefined) {
49
					isEscape = true;
50
				}
51
				WadeMobile.callback.storageCallback("dataRequest",callback,isEscape);
52
				execute("dataRequest", [dataAction,param,isEscape,encode,conTimeout,readTimeout],err);
53
			},openUrl:function(url,err){
54
				execute("openUrl", [encodeURIComponent(url)],err);
55
			},openPage:function(action,data,err){
56
				execute("openPage", [action,data],err);
57
			},openTemplate:function(action,context,err){
58
				execute("openTemplate", [action,context],err);
59
			},back:function(err){
60
				execute("back", [],err);
61
			},getPage:function(callback,action,param,err){
62
				var isEscape = true;
63
				WadeMobile.callback.storageCallback("getPage",callback,isEscape);
64
				execute("getPage", [action,param,isEscape],err);
65
			},getTemplate:function(callback,action,context,err){
66
				var isEscape = true;
67
				WadeMobile.callback.storageCallback("getTemplate",callback,isEscape);
68
				execute("getTemplate", [action,context,isEscape],err);
69
			},storageDataByThread:function(dataAction,param,waitoutTime,err){
70
				execute("storageDataByThread", [dataAction,param,waitoutTime],err);
71
			},openDialog:function(callback,pageAction,param,width,height,isEscape,err){
72
				if (isEscape == undefined) {
73
					isEscape = true;
74
				}
75
				WadeMobile.callback.storageCallback("openDialog",callback,isEscape);
76
				execute("openDialog", [pageAction,param,width,height,isEscape],err);
77
			},closeDialog:function(result,state,err){
78
				execute("closeDialog", [result,state],err);
79
			},openWindow:function(callback,pageAction,param,isEscape,err){
80
				if (isEscape == undefined) {
81
					isEscape = true;
82
				}
83
				WadeMobile.callback.storageCallback("openWindow",callback,isEscape);
84
				execute("openWindow", [pageAction,param,isEscape],err);
85
			},closeWindow:function(result,state,err){
86
				execute("closeWindow", [result,state],err);
87
			},openSlidingMenu:function(callback,action,param,width,height,leftMargin,topMargin,isEscape,err){
88
				WadeMobile.callback.storageCallback("openSlidingMenu",callback,isEscape);
89
				execute("openSlidingMenu", [action,param,width,height,leftMargin,topMargin,isEscape],err);
90
			},closeSlidingMenu:function(result,state,err){
91
				execute("closeSlidingMenu", [result,state],err);
92
			}
93
		};
94
	})();
95
	
96
	//全局变量
97
	var callbackId = 0;
98
	var callbacks = {};//用来存放成功和失败的js回调函数
99
	var callbackDefine = {};//用来存放自定义的js回调函数
100
	var globalErrorKey = null;//全局错误关键字,定位错误
101
	
102
	/*绝大多数情况下,success回调函数是用不上的,有需要回调函数的时候异步方式传入取值*/
103
	var execute = function(action, args, error, success){
104
        args = stringify(args);
105
		if(terminalType=="a"){
106
			androidExecute(action, args, error, success);
107
		}else if(terminalType=="i"){
108
			iosExecute(action, args, error, success);
109
		}else if(terminalType=="w"){
110
			winphoneExecute(action, args, error, success);
111
		}else{
112
			//alert("无终端类型");
113
			//iosExecute(action, args, error, success);
114
		}
115
	};
116
	
117
	WadeMobile.execute = execute;
118
	
119
	var androidExecute = function(action, args, error, success){
120
        var callbackKey = globalErrorKey = action+callbackId++;
121
        if (success || error) {
122
    		callbacks[callbackKey] = {success:success, error:error};
123
        }
124
        if(WadeMobile.debug){
125
        	//alert("准备调用"+action+" 参数:"+args);
126
        	console.log("action:"+action+" param:"+args);
127
        }
128
        PluginManager.exec(action, callbackKey, args);
129
        globalErrorKey = null;
130
	};
131
 
132
    var iosExecute = function(action, args, error, success){
133
        var callbackKey = globalErrorKey = action+callbackId++;
134
        if (success || error) {
135
            callbacks[callbackKey] = {success:success, error:error};
136
        }
137
        if(WadeMobile.debug){
138
            //alert("准备调用"+action+" 参数:"+args);
139
            console.log("action:"+action+" param:"+args);
140
        }
141
        var WADE_SCHEME = "wade://";
142
        var url = WADE_SCHEME+action+"?param="+args+"&callback="+callbackKey;
143
        //var ifrmName = action;
144
        //一个动作请求客户端的最大数量,超过会造成请求覆盖
145
        var limitAction = 10;
146
        var ifrmName = "WADE_FRAME_"+(callbackId%limitAction);
147
        var ifrm = document.getElementById(ifrmName);
148
        if(!ifrm){
149
            var ifrm = document.createElement("iframe");
150
            ifrm.setAttribute("id",ifrmName);
151
            ifrm.setAttribute("width","0");
152
            ifrm.setAttribute("height","0");
153
            ifrm.setAttribute("border","0");
154
            ifrm.setAttribute("frameBorder","0");
155
            ifrm.setAttribute("name",ifrmName);
156
            document.body.appendChild(ifrm);
157
        }
158
        document.getElementById(ifrmName).src = encodeURI(url);
159
        //document.getElementById(ifrmName).contentWindow.location = encodeURI(invocation);
160
        globalErrorKey = null;
161
	};
162
	
163
	var winphoneExecute = function(action, args, error, success){
164
        var callbackKey = globalErrorKey = action+callbackId++;
165
        if (success || error) {
166
    		callbacks[callbackKey] = {success:success, error:error};
167
        }
168
        if(WadeMobile.debug){
169
        	//alert("准备调用"+action+" 参数:"+args);
170
        	console.log("action:"+action+" param:"+args);
171
        }
172
      	window.external.Notify(stringify([action, callbackKey, args])); //[action, callbackKey, args]
173
      	globalErrorKey = null;
174
	};
175
	
176
	WadeMobile.callback = (function(){
177
		return{
178
			success:function(callbackKey, message) {
179
				if(typeof message == "undefined"){
180
					return;
181
				}
182
			    if (callbacks[callbackKey]) {
183
	                if (callbacks[callbackKey].success) {
184
	                	if(typeof callbacks[callbackKey].success==="function"){
185
	                		var func = callbacks[callbackKey].success;
186
	                		func(message);
187
	                	}else{
188
	                		_eval(callbacks[callbackKey].success+"('"+message+"','"+callbackKey+"')");
189
	                	}
190
	                }
191
			        if (callbacks[callbackKey]) {
192
			            delete callbacks[callbackKey];
193
			        }
194
			    }
195
			},error:function(callbackKey, message) {
196
				if(typeof message == "undefined"){
197
					return;
198
				}
199
			    if (callbacks[callbackKey]) {
200
		            if (callbacks[callbackKey].error) {
201
		                if(typeof callbacks[callbackKey].error==="function"){
202
		                	var func = callbacks[callbackKey].error;
203
		                	func(message);
204
	                	}else{
205
	                		_eval(callbacks[callbackKey].error+"('"+message+"','"+callbackKey+"')");
206
	                	}
207
		            }
208
			        if (callbacks[callbackKey]) {
209
			            delete callbacks[callbackKey];
210
			        }
211
			    }else{
212
			    	alert(message);
213
			    }
214
			},storageCallback:function(action,callback,isEscape,isBase64){
215
				var callbackKey = action+callbackId;
216
				if (callback) {
217
		            callbackDefine[callbackKey] = {callback:callback,isEscape:isEscape,isBase64:isBase64};
218
		        }
219
			},execCallback:function(callbackKey, data){
220
				globalErrorKey = callbackKey;
221
				var callbackItem= callbackDefine[callbackKey];
222
				if (callbackItem) {
223
					data = data=="null"?null:data;
224
		        	if(data){
225
		        		if(callbackItem.isEscape==true){
226
		        			data = unescape(data);
227
		        		}else if(callbackItem.isBase64==true){
228
		        			data = Base64.decode64(data);
229
		        		}
230
		        	}
231
		            if (callbackItem.callback) {   
232
		                if(typeof callbackItem.callback==="function"){
233
		                	var func = callbackItem.callback;
234
		                	func(data);
235
	                	}else{
236
	                		_eval(callbackItem.callback+"('"+data+"','"+callbackKey+"')");
237
	                	}
238
		            }
239
			        if (callbackItem) {
240
			            delete callbackDefine[callbackKey];
241
			        }
242
			    }
243
				globalErrorKey = null;
244
			}
245
		};
246
	})();
247
	
248
	WadeMobile.event = (function(){
249
		if(WadeMobile.isApp()){
250
			var e = document.createEvent('Events');
251
			return {
252
				back:function(){
253
					e.initEvent('backKeyDown');
254
					document.dispatchEvent(e);
255
				},menu:function(){
256
					e.initEvent('menuKeyDown');
257
				    document.dispatchEvent(e);
258
				},search:function(){
259
					e.initEvent('searchKeyDown');
260
				    document.dispatchEvent(e);
261
				}
262
			};
263
		}
264
	})();
265
	
266
	/************公共方法**************/
267
	/**
268
	 * @param {String}  errorMessage   错误信息
269
	 * @param {String}  scriptURI      错误文件
270
	 * @param {Long}    lineNumber     错误行号
271
	 */
272
	window.onerror = function(errorMessage, scriptURI, lineNumber) {
273
		var msgArray = new Array();
274
		if (errorMessage)
275
			msgArray.push("错误信息:" + errorMessage);
276
		if (lineNumber)
277
			msgArray.push("错误行号:" + lineNumber);
278
		if (globalErrorKey)
279
			msgArray.push("错误关键字:" + globalErrorKey);
280
		if (scriptURI)
281
			msgArray.push("错误文件:" + scriptURI);
282
		var msg = msgArray.join("\t\n");
283
		console.log(msg);
284
		alert(msg);
285
	};
286
	
287
	//动态执行js方法
288
	function _eval(code,action){
289
		if(WadeMobile.debug){
290
			alert(code);
291
		}
292
		var func = eval(code);
293
		if(typeof func==="function"){
294
			func();
295
		}
296
	}
297
	//格式转换方法
298
	function stringify(args) {
299
	    if (typeof JSON == "undefined") {
300
	        var s = "[";
301
	        for (var i=0; i<args.length; i++) {
302
	            if (i > 0) {
303
	                s = s + ",";
304
	            }
305
	            var type = typeof args[i];
306
	            if ((type == "number") || (type == "boolean")) {
307
	                s = s + args[i];
308
	            }
309
	            else if (args[i] instanceof Array) {
310
	            	s = s + "[" + args[i] + "]";
311
	            }
312
	            else if (args[i] instanceof Object) {
313
	            	var start = true;
314
	            	s = s + '{';
315
	            	for (var name in args[i]) {
316
	            		if (args[i][name] != null) {
317
		            		if (!start) {
318
		            			s = s + ',';
319
		            		}
320
		            		s = s + '"' + name + '":';
321
		            		var nameType = typeof args[i][name];
322
		            		if ((nameType == "number") || (nameType == "boolean")) {
323
		            			s = s + args[i][name];
324
		            		}
325
		            		else if ((typeof args[i][name]) == 'function') {
326
			           			// don't copy the functions
327
		            			s = s + '""'; 
328
		            		}
329
		            		else if (args[i][name] instanceof Object) {
330
		            			s = s + stringify(args[i][name]);
331
		            		}
332
		            		else {
333
		                        s = s + '"' + args[i][name] + '"';            			
334
		            		}
335
		                    start=false;
336
		                 }
337
	            	} 
338
	            	s = s + '}';
339
	            }else {
340
	                var a = args[i].replace(/\\/g, '\\\\');
341
	                a = a.replace(/"/g, '\\"');
342
	                s = s + '"' + a + '"';
343
	            }
344
	        }
345
	        s = s + "]";
346
	        return s;
347
	    }
348
	    else {
349
	        return JSON.stringify(args);
350
	    }
351
	};
352
	return WadeMobile;
353
})();
1
/**
2
 * 与客户端交互的基础API
3
 */
4
window.Mobile = window.WadeMobile = (function(Wade,Base64) {
5
	//终端类型,a为android,i为ios
6
	var deviceType = (function(){
7
		var sUserAgent = navigator.userAgent.toLowerCase();
8
		var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
9
		var bIsIphone = sUserAgent.match(/iphone os/i) == "iphone os";
10
		var bIsAndroid = sUserAgent.match(/android/i) == "android";
11
		var bIsWinphone = sUserAgent.match(/windows phone /i) == "windows phone " || sUserAgent.match(/windows phone os /i) == "windows phone os ";
12
		if(bIsAndroid){
13
			return "a";
14
		}else if(bIsIpad||bIsIphone){
15
			return "i";
16
		}else{
17
			return null;
18
		}
19
	})();
20
	if(!window["TerminalType"]){
21
		window["TerminalType"] = deviceType;
22
	}
23
	var terminalType = window["TerminalType"];
24
	WadeMobile = (function(){
25
        return{
26
        	isAndroid:function(){
27
        		return terminalType=='a';
28
        	},isIOS:function(){
29
        		return terminalType=='i';
30
        	},isWP:function(){
31
        		return terminalType=='w';
32
        	},isApp:function(){//判断是否是APP应用
33
				return terminalType!=null;
34
        	},getSysInfo:function(callback,key,err){//TELNUMBER|IMEI|IMSI|SDKVERSION|OSVERSION|PLATFORM|SIMNUMBER
35
				WadeMobile.callback.storageCallback("getSysInfo",callback);
36
				execute("getSysInfo", [key],err);
37
			},close:function(confirm,err){
38
				if(typeof(confirm)!="boolean"){
39
					confirm = true;
40
				}
41
				execute("close", [confirm],err);
42
			},httpRequest:function(callback,requestUrl,encode,conTimeout,readTimeout,err){
43
				if(terminalType=="i"){
44
					requestUrl = encodeURIComponent(requestUrl);
45
				}
46
				WadeMobile.callback.storageCallback("httpRequest",callback);
47
				execute("httpRequest", [requestUrl,encode,conTimeout,readTimeout],err);
48
			},dataRequest:function(callback,dataAction,param,encode,conTimeout,readTimeout,err){
49
				WadeMobile.callback.storageCallback("dataRequest",callback);
50
				execute("dataRequest", [dataAction,param,encode,conTimeout,readTimeout],err);
51
			},openUrl:function(url,err){
52
				execute("openUrl", [encodeURIComponent(url)],err);
53
			},openPage:function(action,data,err){
54
				execute("openPage", [action,data],err);
55
			},openTemplate:function(action,context,err){
56
				execute("openTemplate", [action,context],err);
57
			},back:function(err){
58
				execute("back", [],err);
59
			},getPage:function(callback,action,param,err){
60
				WadeMobile.callback.storageCallback("getPage",callback);
61
				execute("getPage", [action,param],err);
62
			},getTemplate:function(callback,action,context,err){
63
				WadeMobile.callback.storageCallback("getTemplate",callback);
64
				execute("getTemplate", [action,context],err);
65
			},storageDataByThread:function(dataAction,param,waitoutTime,err){
66
				execute("storageDataByThread", [dataAction,param,waitoutTime],err);
67
			},openDialog:function(callback,pageAction,param,width,height,err){
68
				WadeMobile.callback.storageCallback("openDialog",callback);
69
				execute("openDialog", [pageAction,param,width,height],err);
70
			},closeDialog:function(result,state,err){
71
				execute("closeDialog", [result,state],err);
72
			},openWindow:function(callback,pageAction,param,err){
73
				WadeMobile.callback.storageCallback("openWindow",callback);
74
				execute("openWindow", [pageAction,param],err);
75
			},closeWindow:function(result,state,err){
76
				execute("closeWindow", [result,state],err);
77
			},openSlidingMenu:function(callback,action,param,width,height,leftMargin,topMargin,err){
78
				WadeMobile.callback.storageCallback("openSlidingMenu",callback);
79
				execute("openSlidingMenu", [action,param,width,height,leftMargin,topMargin],err);
80
			},closeSlidingMenu:function(result,state,err){
81
				execute("closeSlidingMenu", [result,state],err);
82
			}
83
		};
84
	})();
85
	
86
	//全局变量
87
	var callbackId = 0;
88
	var callbacks = {};//用来存放成功和失败的js回调函数
89
	var callbackDefine = {};//用来存放自定义的js回调函数
90
	var globalErrorKey = null;//全局错误关键字,定位错误
91
	
92
	/*绝大多数情况下,success回调函数是用不上的,有需要回调函数的时候异步方式传入取值*/
93
	var isAlert = true;//防止反复弹出alert
94
	var execute = function(action, args, error, success){
95
        args = stringify(args);
96
		if(terminalType=="a"){
97
			androidExecute(action, args, error, success);
98
		}else if(terminalType=="i"){
99
			iosExecute(action, args, error, success);
100
		}else if(terminalType=="w"){
101
			winphoneExecute(action, args, error, success);
102
		}else{
103
			if(isAlert){
104
				isAlert = false
105
				alert(action+"无终端类型");
106
			}else{
107
				console.log(action+"无终端类型");
108
			}
109
		}
110
	};
111
	
112
	WadeMobile.execute = execute;
113
	
114
	var androidExecute = function(action, args, error, success){
115
        var callbackKey = globalErrorKey = action+callbackId++;
116
        if (success || error) {
117
    		callbacks[callbackKey] = {success:success, error:error};
118
        }
119
        if(WadeMobile.debug){
120
        	//alert("准备调用"+action+" 参数:"+args);
121
        	console.log("action:"+action+" param:"+args);
122
        }
123
        PluginManager.exec(action, callbackKey, args);
124
        globalErrorKey = null;
125
	};
126
 
127
    var iosExecute = function(action, args, error, success){
128
        var callbackKey = globalErrorKey = action+callbackId++;
129
        if (success || error) {
130
            callbacks[callbackKey] = {success:success, error:error};
131
        }
132
        if(WadeMobile.debug){
133
            //alert("准备调用"+action+" 参数:"+args);
134
            console.log("action:"+action+" param:"+args);
135
        }
136
        
137
        var WADE_SCHEME = "wade://";
138
        var url = WADE_SCHEME+action+"?param="+encodeURIComponent(args)+"&callback="+callbackKey;
139
        //一个动作请求客户端的最大数量,超过会造成请求覆盖
140
        var limitAction = 10;
141
        var ifrmName = "WADE_FRAME_"+(callbackId%limitAction);
142
        var ifrm = document.getElementById(ifrmName);
143
        if(!ifrm){
144
            var ifrm = document.createElement("iframe");
145
            ifrm.setAttribute("id",ifrmName);
146
            ifrm.setAttribute("width","0");
147
            ifrm.setAttribute("height","0");
148
            ifrm.setAttribute("border","0");
149
            ifrm.setAttribute("frameBorder","0");
150
            ifrm.setAttribute("name",ifrmName);
151
            document.body.appendChild(ifrm);
152
        }
153
        document.getElementById(ifrmName).contentWindow.location = encodeURIComponent(url);
154
        //document.getElementById(ifrmName).src = encodeURI(url);//无法处理&符号
155
        globalErrorKey = null;
156
	};
157
	
158
	var winphoneExecute = function(action, args, error, success){
159
        var callbackKey = globalErrorKey = action+callbackId++;
160
        if (success || error) {
161
    		callbacks[callbackKey] = {success:success, error:error};
162
        }
163
        if(WadeMobile.debug){
164
        	//alert("准备调用"+action+" 参数:"+args);
165
        	console.log("action:"+action+" param:"+args);
166
        }
167
      	window.external.Notify(stringify([action, callbackKey, args])); //[action, callbackKey, args]
168
      	globalErrorKey = null;
169
	};
170
	
171
	WadeMobile.callback = (function(){
172
		return{
173
			success:function(callbackKey, message) {
174
				if(typeof message == "undefined"){
175
					return;
176
				}
177
			    if (callbacks[callbackKey]) {
178
	                if (callbacks[callbackKey].success) {
179
	                	if(typeof callbacks[callbackKey].success==="function"){
180
	                		var func = callbacks[callbackKey].success;
181
	                		func(message);
182
	                	}else{
183
	                		_eval(callbacks[callbackKey].success+"('"+message+"','"+callbackKey+"')");
184
	                	}
185
	                }
186
			        if (callbacks[callbackKey]) {
187
			            delete callbacks[callbackKey];
188
			        }
189
			    }
190
			},error:function(callbackKey, message, isEncode) {
191
				if(typeof message == "undefined"){
192
					return;
193
				}
194
        		if(isEncode){
195
        			message = decodeURIComponent(message);
196
        		}
197
			    if (callbacks[callbackKey]) {
198
		            if (callbacks[callbackKey].error) {
199
		                if(typeof callbacks[callbackKey].error==="function"){
200
		                	var func = callbacks[callbackKey].error;
201
		                	func(message);
202
	                	}else{
203
	                		_eval(callbacks[callbackKey].error+"('"+message+"','"+callbackKey+"')");
204
	                	}
205
		            }
206
			        if (callbacks[callbackKey]) {
207
			            delete callbacks[callbackKey];
208
			        }
209
			    }else{
210
			    	alert(message);
211
			    }
212
			},storageCallback:function(action,callback){
213
				var callbackKey = action+callbackId;
214
				if (callback) {
215
		            callbackDefine[callbackKey] = {callback:callback};
216
		        }
217
			},execCallback:function(callbackKey, data, isEncode){
218
				globalErrorKey = callbackKey;
219
				var callbackItem = callbackDefine[callbackKey];
220
				if (callbackItem) {
221
					data = data=="null"?null:data;
222
					if(data){
223
		        		if(isEncode){
224
		        			data = decodeURIComponent(data);
225
		        		}
226
		        	}
227
		            if (callbackItem.callback) {   
228
		                if(typeof callbackItem.callback==="function"){
229
		                	var func = callbackItem.callback;
230
		                	func(data);
231
	                	}else{
232
	                		_eval(callbackItem.callback+"('"+data+"','"+callbackKey+"')");
233
	                	}
234
		            }
235
			        if (callbackItem) {
236
			            delete callbackDefine[callbackKey];
237
			        }
238
			    }
239
				globalErrorKey = null;
240
			}
241
		};
242
	})();
243
	
244
	WadeMobile.event = (function(){
245
		if(WadeMobile.isApp()){
246
			var e = document.createEvent('Events');
247
			return {
248
				back:function(){
249
					e.initEvent('backKeyDown');
250
					document.dispatchEvent(e);
251
				},menu:function(){
252
					e.initEvent('menuKeyDown');
253
				    document.dispatchEvent(e);
254
				},search:function(){
255
					e.initEvent('searchKeyDown');
256
				    document.dispatchEvent(e);
257
				}
258
			};
259
		}
260
	})();
261
	
262
	/************公共方法**************/
263
	/**
264
	 * @param {String}  errorMessage   错误信息
265
	 * @param {String}  scriptURI      错误文件
266
	 * @param {Long}    lineNumber     错误行号
267
	 */
268
	window.onerror = function(errorMessage, scriptURI, lineNumber) {
269
		var msgArray = new Array();
270
		if (errorMessage)
271
			msgArray.push("错误信息:" + errorMessage);
272
		if (lineNumber)
273
			msgArray.push("错误行号:" + lineNumber);
274
		if (globalErrorKey)
275
			msgArray.push("错误关键字:" + globalErrorKey);
276
		if (scriptURI)
277
			msgArray.push("错误文件:" + scriptURI);
278
		var msg = msgArray.join("\t\n");
279
		console.log(msg);
280
		alert(msg);
281
	};
282
	
283
	//动态执行js方法
284
	function _eval(code,action){
285
		if(WadeMobile.debug){
286
			alert(code);
287
		}
288
		var func = eval(code);
289
		if(typeof func==="function"){
290
			func();
291
		}
292
	}
293
	//格式转换方法
294
	function stringify(args) {
295
	    if (typeof JSON == "undefined") {
296
	        var s = "[";
297
	        for (var i=0; i<args.length; i++) {
298
	            if (i > 0) {
299
	                s = s + ",";
300
	            }
301
	            var type = typeof args[i];
302
	            if ((type == "number") || (type == "boolean")) {
303
	                s = s + args[i];
304
	            }
305
	            else if (args[i] instanceof Array) {
306
	            	s = s + "[" + args[i] + "]";
307
	            }
308
	            else if (args[i] instanceof Object) {
309
	            	var start = true;
310
	            	s = s + '{';
311
	            	for (var name in args[i]) {
312
	            		if (args[i][name] != null) {
313
		            		if (!start) {
314
		            			s = s + ',';
315
		            		}
316
		            		s = s + '"' + name + '":';
317
		            		var nameType = typeof args[i][name];
318
		            		if ((nameType == "number") || (nameType == "boolean")) {
319
		            			s = s + args[i][name];
320
		            		}
321
		            		else if ((typeof args[i][name]) == 'function') {
322
			           			// don't copy the functions
323
		            			s = s + '""'; 
324
		            		}
325
		            		else if (args[i][name] instanceof Object) {
326
		            			s = s + stringify(args[i][name]);
327
		            		}
328
		            		else {
329
		                        s = s + '"' + args[i][name] + '"';            			
330
		            		}
331
		                    start=false;
332
		                 }
333
	            	} 
334
	            	s = s + '}';
335
	            }else {
336
	                var a = args[i].replace(/\\/g, '\\\\');
337
	                a = a.replace(/"/g, '\\"');
338
	                s = s + '"' + a + '"';
339
	            }
340
	        }
341
	        s = s + "]";
342
	        return s;
343
	    }else {
344
	        return JSON.stringify(args);
345
	    }
346
	};
347
	
348
	return WadeMobile;
349
})();

二进制
wade-mobile-common/libs/wade-mobile-com.jar


二进制
wade-mobile-common/libs/wade-mobile-data.jar


二进制
wade-mobile-common/libs/wade-mobile-func.jar


二进制
wade-mobile-common/libs/wade-mobile-im.jar


二进制
wade-mobile-common/libs/wade-mobile-ui.jar


二进制
wade-mobile-common/libs/wade-mobile.jar