msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

17 May 09 关于事件模拟

如果用greaseMonkey编写脚本来做一些Web自动化的事情, 最关键的点会是哪里呢?
“模拟浏览器事件”,

试想, 如果一定按钮, 点击以后, 触发了一系列的动作,
如果使用脚本去实现自动化, 那么我们必须去寻找这一系列的动作, 然后找到切入点函数, 模拟参数, 调用. 这会是个很复杂的过程…

但是, 如果我们采用”模拟浏览器事件”的方式, 只要简单的模拟下点击动作, 那些一系列的动作, 我们都可以不关心, 那不是很高效, 也很简单么?

对于IE来讲, 模拟动作有俩套方式:
1. 是IHTMLELEMENT2 提供的事件方法, 比如 click(), blur().
2. 是IHTMLELEMENT3 提供的fireEvent, 事件现场可以使用IHTMLDocument4::createEventObject来模拟

对于FF来讲, 则可以使用Gecko DOM中的createEvent, dispatchEvent.

对于IE来讲, 使用事件方法(以下简称A)和fireEvent(以下简称B)的区别主要有:
1. 使用B的话, 只是发出事件, 不会模拟发送事件之前的浏览器动作, 比如对于focus():
使用A会讲焦点送到事件调用对象上, 而使用B并不会真正的讲焦点送到事件发送对象上.
(其他的待补充).


分享到:



Related Posts:

Tags: , , , ,

5 Responses to “关于事件模拟”

  1. reformadeinteriorpozuelo |

    http://www.squatcheeto.com/

  2. PHP对程序员的要求更高 | 午后小憩 |

    [...] 关于事件模拟 [...]

  3. iterse's blog |

    学习了,不怎么理解,顶一下!

  4. 雪候鸟 |

    @guest thanks, roger~

  5. guest |

    by Fatal error: Maximum execution time of 60 seconds exceeded in d:\clientweb\laruence\wwwroot\wp-includes\feed-rss2.php on line 37

    from google reader.

Leave a Reply

*