【问题标题】:pyjd/hulahop/pyxpcom: how to fire onchange event from python/C++pyjd/hulahop/pyxpcom:如何从 python/C++ 触发 onchange 事件
【发布时间】:2011-03-29 14:17:34
【问题描述】:

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

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++ sn-ps,我使用 FocusManager 接口尝试了一些事情,发出 .focus() 和 .blur () 事件在“inp”元素上,但到目前为止没有成功。

有人知道这应该如何工作吗? 甚至可能吗? 有没有办法直接调用附加的 onchange 处理程序?

P.S.:对不起,睡衣标签,我不允许创建“pyjd”标签:-)

【问题讨论】:

    标签: python xpcom pyjamas


    【解决方案1】:

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

    【讨论】:

    • 谢谢 Neil,我之前没见过这个例子,也不知道“Events”。最后,这是有效的: ev = doc.createEvent("Events"); ev.initEvent("改变", True, True); item.dispatchEvent(ev);
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多