HTML 事件解说之一 text 文本框

3 篇文章 0 订阅
2 篇文章 0 订阅

 

今天同学们在做Selenium的扩展,针对JQuery的某些插件,标准的click或type命令难已触发JQuery定义的一些事件,比如一个标准的type方法触发的事件如下:

 

由此可以看出实际上 type 命令触发的实际只有 focus,select 和 change, 远远不能满足我们的要求,而是他们写了一些新的命令来实现,我没有同意,实际上是我们没有真正弄清楚事件的触发机制,而是我找了一个页面来证实事件的触发顺序。

 

前面我们列出了标准的键盘事件包括以下三种:

属性描述
onkeydown脚本当键盘被按下时执行脚本
onkeypress脚本当键盘被按下后又松开时执行脚本
onkeyup脚本当键盘被松开时执行脚本

 

以上说明已很清楚,只不过还是分情形的,通常我们要对文本框进行操作,首先要让他获得焦点,有两种方法,鼠标点击和 tab 键切换,并且无任那种方法,都事先有个 focus 事件被触发。

比如我们有两个text,我们用 tab 键切换焦点的事件顺序为:

{keydown(theTextbox - 9)} {keypress(theTextbox - 9)} {blur(theTextbox)} {focus(theTextbox1)} {select(theTextbox1)} {keyup(theTextbox1 - 9)}

这个事件序列很有意思,尤其是最后一个,keyup 发生在第二个text 上,这可是个bug 多发区。

 

同样的两个text, 用鼠标点击来切换焦点的事件顺序为:

{mouseout(theTextbox)} {mouseover(theTextbox1)} {mousedown(theTextbox1)} {blur(theTextbox)} {focus(theTextbox1)} {mouseup(theTextbox1)} {click(theTextbox1)}

这个事件序列还比较正常,没什么特殊之处。

 

在切换焦点之后的每一次键入都会触发这三个键盘事件,比如按下m键触发的事件有:

{keydown(theTextbox1 - 77)} {keypress(theTextbox1)} {keyup(theTextbox1 - 77)}

 

此时如果单击鼠标,则触发以下事件

{mouseover(theTextbox1)} {mousedown(theTextbox1)} {mouseup(theTextbox1)} {click(theTextbox1)} {mouseout(theTextbox1)} 

 

在完成输入,把焦点切换到其他元素时,这时发生在 text 的事件有两个:

{change(theTextbox1)} {blur(theTextbox1)}

 

这就是一个在文本框输入内容时的一个完整的事件机制,所以大家在开发,编写测试工具时得注意,千万不要多做事情,但更不能不做。

 

所以建议type的实现方式更改如下:

 

此方法将持续改进,希望能真实的模拟用户的输入。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值