pyjd / hulahop / pyxpcom: как запустить событие onchange из python / C ++ - PullRequest
1 голос
/ 29 марта 2011

Я использую 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 напрямую?

PS: Извините за тег пижамы, мне не разрешено создавать тег 'pyjd': -)

1 Ответ

1 голос
/ 31 марта 2011

События изменений обычно отправляются, когда поле теряет фокус или нажата клавиша Enter, и не ожидается, что изменения, внесенные в сценарий, вызовут их, поэтому лучше всего запустить собственное событие изменения, если это то, что вам нужно,Существует некоторый пример кода для отправки события клика ;процедура для события изменения аналогична, но в этом случае тип события - События вместо MouseEvents, и поэтому вам необходимо вместо этого вызвать InitEvent.

...