|
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间: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
你是怎么测试的??
================ 我测试了一下 确实是我的错 呵呵 :oops: 谢谢 我之前忘记了是被什么误导了 我一直以为 按到底 是 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)不能很好的触发请求(因为会先在文本框中显示首字母)。
|
|
| 返回顶楼 | |









