pyjd/hulahop/pyxpcom: как запустить событие onchange из python/C++
Я использую 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 ответ
События изменений обычно отправляются, когда поле теряет фокус или нажимается клавиша Enter, и не ожидается, что изменения в сценарии будут запускать их, поэтому лучше всего запустить собственное событие изменения, если это то, что вам нужно. Существует некоторый пример кода для отправки события щелчка; процедура для события изменения аналогична, но в этом случае тип события - События вместо MouseEvents, и поэтому вам необходимо вместо этого вызвать InitEvent.