论坛首页 Web前端技术论坛

西方人通常发现不了的一个IE的bug

浏览 41479 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-05-11  
netix1999 写道
fins 写道
down click up 这是事件处理的顺序
在down里做一些事情确实危险

例如 alert一个东西 那么click事件 就不能被正确的触发了


事件顺序应该是 down up click 吧


你试验一下就知道了
0 请登录后投票
   发表时间:2008-05-11  
楼主描述的问题好像不是bug吧,在keyup的时候聚焦或者取得文字就会如你所愿了:

--- settimeout_original.html	2008-05-11 23:41:23.000000000 +0900
+++ settimeout.html	2008-05-11 23:32:48.000000000 +0900
@@ -13,7 +13,7 @@
 		}
 		
 		window.onload = function(){
-			get('makeinput').onmousedown = function(){
+			get('makeinput').onmouseup = function(){
 				var input = document.createElement('input');
 				input.setAttribute('type', 'text');
 				input.setAttribute('value', 'test1');
@@ -31,7 +31,7 @@
 					input.select();
 				}, 0);
 			}
-			get('input').onkeypress = function(){
+			get('input').onkeyup = function(){
 				get('preview').innerHTML = this.value;
 			}
 		}


--- settimeout_original.html	2008-05-11 23:41:23.000000000 +0900
+++ settimeout.html	2008-05-11 23:47:48.000000000 +0900
@@ -12,14 +12,18 @@
 			return document.getElementById(id);
 		}
 		
+		var lastInput;
 		window.onload = function(){
 			get('makeinput').onmousedown = function(){
 				var input = document.createElement('input');
 				input.setAttribute('type', 'text');
 				input.setAttribute('value', 'test1');
 				get('inpwrapper').appendChild(input);
-				input.focus();
-				input.select();
+				lastInput = input;
+			}
+			get('makeinput').onmouseup = function() {
+				lastInput.focus();
+				lastInput.select();
 			}
 			get('makeinput2').onmousedown = function(){
 				var input = document.createElement('input');
@@ -31,7 +35,7 @@
 					input.select();
 				}, 0);
 			}
-			get('input').onkeypress = function(){
+			get('input').onkeyup = function(){
 				get('preview').innerHTML = this.value;
 			}
 		}
0 请登录后投票
   发表时间:2008-05-11  
fins 写道
netix1999 写道
fins 写道
down click up 这是事件处理的顺序
在down里做一些事情确实危险

例如 alert一个东西 那么click事件 就不能被正确的触发了


事件顺序应该是 down up click 吧


你试验一下就知道了



对key 来说  keypress, keytype, keyrelease
对mouse来说 mousedown, mouseup, mouseclick

0 请登录后投票
   发表时间:2008-05-11  
你是怎么测试的??

================

我测试了一下 确实是我的错 呵呵  谢谢

我之前忘记了是被什么误导了 我一直以为

按到底 是 down
抬起的一瞬间是 click
完全抬起时是 up

谁来告诉我一下 哪个系统是这么设计的了
swt ? j2me ? ...
0 请登录后投票
   发表时间:2008-05-12  
fins 写道

按到底 是 down
抬起的一瞬间是 click
完全抬起时是 up

谁来告诉我一下 哪个系统是这么设计的了
swt ? j2me ? ...


你是不是跟dblclick混淆了?dblclick的行为是有不一致的。
0 请登录后投票
   发表时间:2008-05-14  
hax 写道
birdjavaeye 写道
hax 写道

实际上,这是IE的focus机制的bug。

是的,ie中input这样的控件在显示到页面之前设置focus是无效的,所以要setTimeout在控件显示之后设置focus


并非如此。你再看看我的主贴,其实和input是否显示出来是没有关系的。

嗯,结果即是如此,我说的现象,你说的原因,当然我没有去研究原因是什么
不过对于ie这种不得不用的垃圾,找到方案我就用了,实在没功夫去深究

我回复中提到的另外一些情况,你也研究研究吧,看看有没有更好的方案
0 请登录后投票
   发表时间:2008-05-17  
afcn0 写道
不知道,mousedown就是会影响focus,在ff下面也是一样,timeout是在事件结素后执行,当然focus上了,西方人发现不了,是因为输入法,焦点在输入法和ie之间大概会有问题的意思吧(本论坛有bug,在页面1提交回复,竟然直接更新到页面1底下了)


那你可以想想本论坛的发帖机制是什么。
那个只不过是对成功callback的一种处理。直接添加到当前页面的底部显示,用来提高用户体验。。。难道你真的以为改变了楼层吗……
0 请登录后投票
   发表时间:2008-05-18  
"提高用户体验"有这么提高的吗,哪个大哥写的程序...........这叫提高体验吗
0 请登录后投票
   发表时间:2008-05-18  
我认为javaeye的这个直接加到当前页面底端的处理确实存在问题,因为一般用户对此并没有预期。我相信可以做得更好。
0 请登录后投票
   发表时间:2008-05-19  
类似问题遇过了,在实现autocomplete时就发现在IE中正常,而在FF中,使用常用的中文输入(如sogou)不能很好的触发请求(因为会先在文本框中显示首字母)。

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics