GreenBrowser 论坛


 
标题: 【插件】输入立即搜索 [07-10-22 更新 GUI 版本]
Jingle
大学三年级
Rank: 9Rank: 9Rank: 9


UID 5287
精华 6
积分 1741
帖子 469
阅读权限 200
注册 2007-6-5
来自 广东
状态 离线
发表于 2007-8-21 23:45  资料 短消息 
如果使用 focus() 让输入文本框获得焦点,这时候页面上匹配文本将失去选中的状态,用户将看不到匹配文本在哪里。
也就是“让输入文本框获得焦点”与“让页面上匹配文本呈选中状态”不能同时满足。

搜索过程详细说来:
      当焦点在页面上时,用户想搜索一个关键字,他按下一个字符键,插件响应了这个按键动作,并且让搜索文本框获得焦点,另外考虑到他按下的这个字符键是他要搜索的关键字的一部分,所以得将这个字符键响应到搜索文本框上。
      比如在英文输入法下,他按下G键,则我们添加字符g到搜索文本框,在 document.onkeydown 中直接让搜索文本框 focus() 可以解决,但在中文输入法下它也是这么干的!它也是直接将字符g添加到文本框中,而不是让输入法捕获这个按键动作(估计输入法忽略掉了)!

<html><head><script language=javascript>
function document.onkeydown() {
      text1.focus();
}
</script></head><body>
      <input type=text id=text1 size=30 />
</body></html>

      为了解决这个中文输入法的问题,我忽略掉了这个按键动作响应到文本框上,而是用 gbSendKey() 重新模拟一次这个按键动作,这样第一次(指的是失焦后的第一次按键动作)响应中英文的输入就没问题了。
      为了达到输入立即搜索的目的,用户一向文本框中输入新的字符,插件就开始搜索,找到后让匹配文本呈选中状态,但搜索文本框因此失去焦点;接着用户继续按键,重复上面描述的过程。所以整个输入关键字的过程会有几次失焦获焦,也就得要几次 gbSendKey()。
      但问题就来了,gbSendKey() 似乎有所延迟!对于按键速度稍显快的用户来说,gbSendKey() 赶不上他们的按键动作将导致按键失效或按键颠倒的问题!

[ 本帖最后由 Jingle 于 2007-8-22 01:24 编辑 ]
顶部
wolfcm
大学四年级
Rank: 9Rank: 9Rank: 9


GreenBrowser专家   论坛热心贡献奖  
UID 122
精华 18
积分 2336
帖子 1136
阅读权限 200
注册 2006-12-25
状态 离线
发表于 2007-8-22 08:27  资料 短消息 
楼主好强,偶像啊
更新太迅猛,等稳定之后再下载研究

sendkey确实是有延迟,MQ自己说的,几百毫秒

[ 本帖最后由 wolfcm 于 2007-8-22 08:28 编辑 ]




顶部
Passerby
大学四年级
Rank: 9Rank: 9Rank: 9
Moderator


GreenBrowser专家   论坛热心贡献奖  
UID 26
精华 11
积分 8320
帖子 7285
阅读权限 200
注册 2006-12-22
来自 China
状态 离线
发表于 2007-8-22 22:00  资料 主页 短消息 
可以用onkeyup事件,开输入法也没有问题,而且基本上可以实时响应变化情况
使用GUI的好处是,可以尽量避免响应全局事件,减少跟一些ajax网页的冲突


图片附件: [[DOM object].onkeyup] upload.PNG (2007-8-22 22:00, 72.4 K)





"Are you hot?"
"17 charisma."
顶部
gtodavid
大学四年级
Rank: 9Rank: 9Rank: 9


GreenBrowser专家   论坛热心贡献奖  
UID 943
精华 0
积分 2260
帖子 793
阅读权限 200
注册 2007-1-13
状态 离线
发表于 2007-8-23 09:25  资料 短消息  Yahoo!
蠻不錯的 推一個
顶部
robbet
小学一年级
Rank: 1



UID 8893
精华 0
积分 3
帖子 3
阅读权限 10
注册 2007-8-24
状态 离线
发表于 2007-8-24 09:11  资料 短消息 
还是不错的,谢谢LZ!
顶部
gxlqssjf
小学六年级
Rank: 6Rank: 6



UID 1337
精华 0
积分 60
帖子 39
阅读权限 90
注册 2007-1-20
来自 广东
状态 离线
发表于 2007-8-24 09:14  资料 短消息  QQ
顶部
sz_boy
高中一年级
Rank: 8Rank: 8


UID 221
精华 5
积分 586
帖子 214
阅读权限 150
注册 2006-12-26
状态 离线
发表于 2007-8-24 13:59  资料 短消息 
这修正算是正式版吗?
顶部
Jingle
大学三年级
Rank: 9Rank: 9Rank: 9


UID 5287
精华 6
积分 1741
帖子 469
阅读权限 200
注册 2007-6-5
来自 广东
状态 离线
发表于 2007-8-24 15:19  资料 短消息 
多谢各位支持!

也不能算是正式版,GUI 版本的输入问题还没解决,也没想到解决办法。
非 GUI 版本就比较完美了,就是只支持英文字符,关键字也不能删减。
顶部
Passerby
大学四年级
Rank: 9Rank: 9Rank: 9
Moderator


GreenBrowser专家   论坛热心贡献奖  
UID 26
精华 11
积分 8320
帖子 7285
阅读权限 200
注册 2006-12-22
来自 China
状态 离线
发表于 2007-8-24 21:30  资料 主页 短消息 
其实找到的字符未必要选中状态啊,只要指定一种专用的颜色高亮就好了,搜索下一个时可以先清空高亮再找,配合[object].scrollIntoView(),也应该能做到清晰。




"Are you hot?"
"17 charisma."
顶部
Jingle
大学三年级
Rank: 9Rank: 9Rank: 9


UID 5287
精华 6
积分 1741
帖子 469
阅读权限 200
注册 2007-6-5
来自 广东
状态 离线
发表于 2007-8-24 22:38  资料 短消息 
说得也是,有空改成高亮的
顶部
 


当前时区 GMT+8, 现在时间是 2020-2-24 03:41
苏ICP备07001345号

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.038119 second(s), 6 queries

清除 Cookies - 联系我们 - 5iGB.com - Archiver