pyjd / hulahop / pyxpcom:如何从python / C ++触发onchange事件

时间:2011-03-29 14:17:35

标签: python xpcom pyjamas

我正在使用pyjd / hulahop / pyxpcom来加载带有输入字段的HTML文档,这个输入字段与“onchange = ....”绑定到一些JS函数进行一些AJAX调用。

html看起来像这样:

...
<input name="inp" type="text" onchange="checkInput()"></input>
...

我可以使用以下代码轻松找到并修改输入字段:

import pyjd
pyjd.setup(URL)
bw = pyjd.hula.wv
doc = bw.getDomDocument()

inp = doc.getElementsByName("inp").item(0)
inp.value = "somestring"

然而,这并没有触发“onchange”处理程序,似乎我手动选择进入/退出输入字段来执行此操作。 从我所看到的pyxpcom接口非常接近C ++接口,这就是为什么我在那里阅读了一堆C ++片段,我尝试了几个使用FocusManager接口的东西,发出.focus()和.blur()关于“inp”元素的事件,但到目前为止没有成功。

有人知道这应该是怎么回事吗? 它甚至可能吗? 有没有办法直接调用附加的onchange处理程序?

P.S。:对于睡衣标签,我不允许创建'pyjd'标签: - )

1 个答案:

答案 0 :(得分:1)

更改事件通常在字段失去焦点或按下Enter键时发送,并且预计脚本化更改不会触发它们,因此如果您需要发生这种情况,最好触发您自己的更改事件。有一些sample code for dispatching a click event;更改事件的过程类似,但在这种情况下,事件类型是Events而不是MouseEvents,因此您需要调用InitEvent。