锁定老帖子 主题:西方人通常发现不了的一个IE的bug
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-11
netix1999 写道 fins 写道 down click up 这是事件处理的顺序
在down里做一些事情确实危险 例如 alert一个东西 那么click事件 就不能被正确的触发了 事件顺序应该是 down up click 吧 你试验一下就知道了 |
|
返回顶楼 | |
发表时间: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; } } |
|
返回顶楼 | |
发表时间:2008-05-11
fins 写道 netix1999 写道 fins 写道 down click up 这是事件处理的顺序
在down里做一些事情确实危险 例如 alert一个东西 那么click事件 就不能被正确的触发了 事件顺序应该是 down up click 吧 你试验一下就知道了 对key 来说 keypress, keytype, keyrelease 对mouse来说 mousedown, mouseup, mouseclick |
|
返回顶楼 | |
发表时间:2008-05-11
你是怎么测试的??
================ 我测试了一下 确实是我的错 呵呵 谢谢 我之前忘记了是被什么误导了 我一直以为 按到底 是 down 抬起的一瞬间是 click 完全抬起时是 up 谁来告诉我一下 哪个系统是这么设计的了 swt ? j2me ? ... |
|
返回顶楼 | |
发表时间:2008-05-12
fins 写道 按到底 是 down 抬起的一瞬间是 click 完全抬起时是 up 谁来告诉我一下 哪个系统是这么设计的了 swt ? j2me ? ... 你是不是跟dblclick混淆了?dblclick的行为是有不一致的。 |
|
返回顶楼 | |
发表时间:2008-05-14
hax 写道 birdjavaeye 写道 hax 写道 实际上,这是IE的focus机制的bug。 是的,ie中input这样的控件在显示到页面之前设置focus是无效的,所以要setTimeout在控件显示之后设置focus 并非如此。你再看看我的主贴,其实和input是否显示出来是没有关系的。 嗯,结果即是如此,我说的现象,你说的原因,当然我没有去研究原因是什么 不过对于ie这种不得不用的垃圾,找到方案我就用了,实在没功夫去深究 我回复中提到的另外一些情况,你也研究研究吧,看看有没有更好的方案 |
|
返回顶楼 | |
发表时间:2008-05-17
afcn0 写道 不知道,mousedown就是会影响focus,在ff下面也是一样,timeout是在事件结素后执行,当然focus上了,西方人发现不了,是因为输入法,焦点在输入法和ie之间大概会有问题的意思吧(本论坛有bug,在页面1提交回复,竟然直接更新到页面1底下了)
那你可以想想本论坛的发帖机制是什么。 那个只不过是对成功callback的一种处理。直接添加到当前页面的底部显示,用来提高用户体验。。。难道你真的以为改变了楼层吗…… |
|
返回顶楼 | |
发表时间:2008-05-18
"提高用户体验"有这么提高的吗,哪个大哥写的程序...........这叫提高体验吗
|
|
返回顶楼 | |
发表时间:2008-05-18
我认为javaeye的这个直接加到当前页面底端的处理确实存在问题,因为一般用户对此并没有预期。我相信可以做得更好。
|
|
返回顶楼 | |
发表时间:2008-05-19
类似问题遇过了,在实现autocomplete时就发现在IE中正常,而在FF中,使用常用的中文输入(如sogou)不能很好的触发请求(因为会先在文本框中显示首字母)。
|
|
返回顶楼 | |