ソースを参照

删除多余文件

tik5213 9 年 前
コミット
d496f3595d
共有1 個のファイルを変更した0 個の追加377 個の削除を含む
  1. 0 377
      general-web-server/web/res/js/wade-mobile2.js

+ 0 - 377
general-web-server/web/res/js/wade-mobile2.js

@ -1,377 +0,0 @@
1
/**
2
 * 与客户端交互的基础API
3
 */
4
window.Mobile = window.WadeMobile = (function() {
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
		//执行回调方法时,回调方法的key值为,回调方法实际的key值 + 本iframe上保持的WadeMobile在top上的唯一标识
116
		var tmpKey = action+callbackId++;
117
		if(window._WadeMobileSet_Key_ != undefined){
118
			tmpKey += window._WadeMobileSet_Key_;
119
		}
120
        var callbackKey = globalErrorKey = tmpKey;
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
        
142
        var WADE_SCHEME = "wade://";
143
        var url = WADE_SCHEME+action+"?param="+encodeURIComponent(args)+"&callback="+callbackKey;
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).contentWindow.location = encodeURIComponent(url);
159
        //document.getElementById(ifrmName).src = encodeURI(url);//无法处理&符号
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, isEncode) {
196
				if(typeof message == "undefined"){
197
					return;
198
				}
199
        		if(isEncode){
200
        			message = decodeURIComponent(message);
201
        		}
202
			    if (callbacks[callbackKey]) {
203
		            if (callbacks[callbackKey].error) {
204
		                if(typeof callbacks[callbackKey].error==="function"){
205
		                	var func = callbacks[callbackKey].error;
206
		                	func(message);
207
	                	}else{
208
	                		_eval(callbacks[callbackKey].error+"('"+message+"','"+callbackKey+"')");
209
	                	}
210
		            }
211
			        if (callbacks[callbackKey]) {
212
			            delete callbacks[callbackKey];
213
			        }
214
			    }else{
215
			    	alert(message);
216
			    }
217
			},storageCallback:function(action,callback){
218
				var callbackKey = action+callbackId;
219
				if (callback) {
220
		            callbackDefine[callbackKey] = {callback:callback};
221
		        }
222
			},execCallback:function(callbackKey, data, isEncode){
223
				globalErrorKey = callbackKey;
224
				var callbackItem = callbackDefine[callbackKey];
225
				if (callbackItem) {
226
					data = data=="null"?null:data;
227
					if(data){
228
		        		if(isEncode){
229
		        			data = decodeURIComponent(data);
230
		        		}
231
		        	}
232
		            if (callbackItem.callback) {   
233
		                if(typeof callbackItem.callback==="function"){
234
		                	var func = callbackItem.callback;
235
		                	func(data);
236
	                	}else{
237
	                		_eval(callbackItem.callback+"('"+data+"','"+callbackKey+"')");
238
	                	}
239
		            }
240
			        if (callbackItem) {
241
			            delete callbackDefine[callbackKey];
242
			        }
243
			    }
244
				globalErrorKey = null;
245
			}
246
		};
247
	})();
248
	
249
	WadeMobile.event = (function(){
250
		if(WadeMobile.isApp()){
251
			var e = document.createEvent('Events');
252
			return {
253
				back:function(){
254
					e.initEvent('backKeyDown');
255
					document.dispatchEvent(e);
256
				},menu:function(){
257
					e.initEvent('menuKeyDown');
258
				    document.dispatchEvent(e);
259
				},search:function(){
260
					e.initEvent('searchKeyDown');
261
				    document.dispatchEvent(e);
262
				}
263
			};
264
		}
265
	})();
266
	
267
	/************公共方法**************/
268
	/**
269
	 * @param {String}  errorMessage   错误信息
270
	 * @param {String}  scriptURI      错误文件
271
	 * @param {Long}    lineNumber     错误行号
272
	 */
273
	window.onerror = function(errorMessage, scriptURI, lineNumber) {
274
		var msgArray = new Array();
275
		if (errorMessage)
276
			msgArray.push("错误信息:" + errorMessage);
277
		if (lineNumber)
278
			msgArray.push("错误行号:" + lineNumber);
279
		if (globalErrorKey)
280
			msgArray.push("错误关键字:" + globalErrorKey);
281
		if (scriptURI)
282
			msgArray.push("错误文件:" + scriptURI);
283
		var msg = msgArray.join("\t\n");
284
		console.log(msg);
285
		alert(msg);
286
	};
287
	
288
	//动态执行js方法
289
	function _eval(code,action){
290
		if(WadeMobile.debug){
291
			alert(code);
292
		}
293
		var func = eval(code);
294
		if(typeof func==="function"){
295
			func();
296
		}
297
	}
298
	//格式转换方法
299
	function stringify(args) {
300
	    if (typeof JSON == "undefined") {
301
	        var s = "[";
302
	        for (var i=0; i<args.length; i++) {
303
	            if (i > 0) {
304
	                s = s + ",";
305
	            }
306
	            var type = typeof args[i];
307
	            if ((type == "number") || (type == "boolean")) {
308
	                s = s + args[i];
309
	            }
310
	            else if (args[i] instanceof Array) {
311
	            	s = s + "[" + args[i] + "]";
312
	            }
313
	            else if (args[i] instanceof Object) {
314
	            	var start = true;
315
	            	s = s + '{';
316
	            	for (var name in args[i]) {
317
	            		if (args[i][name] != null) {
318
		            		if (!start) {
319
		            			s = s + ',';
320
		            		}
321
		            		s = s + '"' + name + '":';
322
		            		var nameType = typeof args[i][name];
323
		            		if ((nameType == "number") || (nameType == "boolean")) {
324
		            			s = s + args[i][name];
325
		            		}
326
		            		else if ((typeof args[i][name]) == 'function') {
327
			           			// don't copy the functions
328
		            			s = s + '""'; 
329
		            		}
330
		            		else if (args[i][name] instanceof Object) {
331
		            			s = s + stringify(args[i][name]);
332
		            		}
333
		            		else {
334
		                        s = s + '"' + args[i][name] + '"';            			
335
		            		}
336
		                    start=false;
337
		                 }
338
	            	} 
339
	            	s = s + '}';
340
	            }else {
341
	                var a = args[i].replace(/\\/g, '\\\\');
342
	                a = a.replace(/"/g, '\\"');
343
	                s = s + '"' + a + '"';
344
	            }
345
	        }
346
	        s = s + "]";
347
	        return s;
348
	    }else {
349
	        return JSON.stringify(args);
350
	    }
351
	};
352
	
353
	return WadeMobile;
354
})();
355
356
//让top对象上,保持有一个当前iframe里面的WadeMobile对象的引用。
357
//注意:在iframe中,_WadeMobileSet_Key_+时间戳表示一个key,此key作为了在top对象上索引iframe中的WadeMobile的依据。
358
//将保持引用的key值存入到当前ifame的window对象上。
359
(function(){
360
	if(top != window){
361
		if(top.WadeMobileSet == undefined){
362
			top.WadeMobileSet = {};
363
		}
364
		for(var key in top.WadeMobileSet){
365
			if( key.indexOf("_WadeMobileSet_Key_") != -1 && ( !top.WadeMobileSet[key] || ( top.WadeMobileSet[key].canRemoved && top.WadeMobileSet[key].canRemoved() ) ) ){
366
				delete top.WadeMobileSet[key];
367
			}
368
		}
369
		var key = "_WadeMobileSet_Key_" + new Date().getTime();
370
		window._WadeMobileSet_Key_ = key;
371
		console.log("In an iframe, window.WadeMobile object is referenced top.WadeMobileSet." + key);
372
		top.WadeMobileSet[key] = window.WadeMobile;
373
		window.WadeMobile.canRemoved = function(){
374
			return !window;
375
		};
376
	}
377
})();