Bladeren bron

android返回键事件处理的全面升级 添加了返回值true/false控制事件的传播 添加了入参paramObj作为返回事件的上下文数据。

tik5213 9 jaren geleden
bovenliggende
commit
08d5e85cf9

+ 4 - 1
display-server/web/res/js/mobile/wade-mobile.js

@ -368,7 +368,7 @@ define(["jcl","base64","res/js/mobile/expand-mobile.js","biz/js/common/biz-mobil
368 368
			top.WadeMobileSet = {};
369 369
		}
370 370
		for(var key in top.WadeMobileSet){
371
			if(top.WadeMobileSet[key] == undefined && key.indexOf("_WadeMobileSet_Key_") != -1){
371
			if( key.indexOf("_WadeMobileSet_Key_") != -1 && ( top.WadeMobileSet[key] == undefined || top.WadeMobileSet[key].canRemoved() ) ){
372 372
				delete top.WadeMobileSet[key];
373 373
			}
374 374
		}
@ -376,5 +376,8 @@ define(["jcl","base64","res/js/mobile/expand-mobile.js","biz/js/common/biz-mobil
376 376
		window._WadeMobileSet_Key_ = key;
377 377
		console.log("In an iframe, window.WadeMobile object is referenced top.WadeMobileSet." + key);
378 378
		top.WadeMobileSet[key] = window.WadeMobile;
379
		window.WadeMobile.canRemoved = function(){
380
			return !window;
381
		};
379 382
	}
380 383
})();

+ 13 - 2
general-web-server/web/myindex.html

@ -107,8 +107,19 @@
107 107
		<input type="text" style="width: 200px;height: 100px;">
108 108
		
109 109
		<script type="text/javascript">
110
			function onMobileBackPressed(){
111
				alert("返回键被点击了。在这里可以执行相应的s方法。")
110
			window.WadeMobile.onMobileBackPressed = function(paramObj){
111
				console.log("======================");
112
				alert("返回键被点击了。在这里可以执行相应的s方法。下面将从父页面中移除本iframe!"
113
						+ "onMobileBackPressed方法返回值为false时,将允许返回键事件继续传播,"
114
						+ "onMobileBackPressed方法返回值为true时,表示已经处理完此返回键事件,本次事件将终止传播。");
115
				alert("返回事件中传递的信息为:" + paramObj.message);
116
				//修改paramObj对象中的信息属性
117
				paramObj.message = "被iframe修改过的message -- 工号1987";
118
				var testIframe = top.document.getElementById('testIframe');
119
				if(testIframe){
120
					testIframe.parentNode.removeChild(testIframe);
121
				}
122
				return false;
112 123
			}
113 124
		</script>
114 125
	</body>

+ 6 - 2
general-web-server/web/res/js/wade-mobile.js

@ -354,14 +354,15 @@ window.Mobile = window.WadeMobile = (function() {
354 354
})();
355 355
356 356
//让top对象上,保持有一个当前iframe里面的WadeMobile对象的引用。
357
//刚,将保持引用的key值存入到当前ifame的window对象上
357
//注意:在iframe中,_WadeMobileSet_Key_+时间戳表示一个key,此key作为了在top对象上索引iframe中的WadeMobile的依据
358
//将保持引用的key值存入到当前ifame的window对象上。
358 359
(function(){
359 360
	if(top != window){
360 361
		if(top.WadeMobileSet == undefined){
361 362
			top.WadeMobileSet = {};
362 363
		}
363 364
		for(var key in top.WadeMobileSet){
364
			if(top.WadeMobileSet[key] == undefined && key.indexOf("_WadeMobileSet_Key_") != -1){
365
			if( key.indexOf("_WadeMobileSet_Key_") != -1 && ( top.WadeMobileSet[key] == undefined || top.WadeMobileSet[key].canRemoved() ) ){
365 366
				delete top.WadeMobileSet[key];
366 367
			}
367 368
		}
@ -369,5 +370,8 @@ window.Mobile = window.WadeMobile = (function() {
369 370
		window._WadeMobileSet_Key_ = key;
370 371
		console.log("In an iframe, window.WadeMobile object is referenced top.WadeMobileSet." + key);
371 372
		top.WadeMobileSet[key] = window.WadeMobile;
373
		window.WadeMobile.canRemoved = function(){
374
			return !window;
375
		};
372 376
	}
373 377
})();

+ 15 - 2
general-web-server/web/withiframe.html

@ -3,9 +3,22 @@
3 3
<head>
4 4
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 5
<title>Insert title here</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>
6 13
</head>
7 14
<body>
8 15
<h1>下面是iframe的内容</h1>
9
<iframe src="myindex.html" style="width: 300px;height: 500px;"></iframe>
16
<iframe id="testIframe" src="myindex.html" style="width: 300px;height: 500px;"></iframe>
10 17
</body>
11
</html>
18
<script type="text/javascript">
19
window.WadeMobile.onMobileBackPressed = function(){
20
	alert("(top)返回事件中传递的信息为:" + paramObj.message);
21
	WadeMobile.close();
22
}
23
</script>
24
</html>