WebKitGTK+ プロジェクトを C++ から Python (PyGI を使用) に変換しています。<input>
ページ上の要素がフォーカスを得たり失ったりするたびに検出する必要があります。C++ プロジェクトでは、このコードを使用して実行しました (この例に基づく):
WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
WebKitDOMNodeList* nodes = webkit_dom_document_get_elements_by_tag_name(document, "*");
int len = webkit_dom_node_list_get_length(nodes);
for(int i = 0; i < len; i++) {
WebKitDOMNode* node = webkit_dom_node_list_item(nodes, i);
if(WEBKIT_DOM_IS_HTML_INPUT_ELEMENT(node)) {
webkit_dom_event_target_add_event_listener(WEBKIT_DOM_EVENT_TARGET(node), "focus", G_CALLBACK(inputFocus), false);
webkit_dom_event_target_add_event_listener(WEBKIT_DOM_EVENT_TARGET(node), "blur", G_CALLBACK(inputBlur), false);
}
}
Pythonで同じことをやろうとしたところ、次のようになりました。
document = view.get_dom_document()
nodes = document.get_elements_by_tag_name('*')
for i in range(nodes.get_length()):
node = nodes.item(i)
if isinstance(node, WebKit.DOMHTMLInputElement):
node.add_event_listener('focus', inputFocus, False)
問題は、メソッドDOMHTMLInputElement
がないことです。add_event_listener
Cバインディングに基づいて、それはDOMEventTarget
(拡張する)の一部である必要がありますが、何らかの形で組み込まれていますが、DOMHTMLInputElement
一緒に欠落しています。これは、この WebKit バグによる可能性があります。よくわかりませんremove_event_listener
dispatch_event
Pythonでこれを行う方法はありますか? C++ で使用していたのと同じスキームを使用する必要はありません。ページ上の特定の要素でフォーカスが変更されるたびに呼び出すコールバックを登録する何らかの方法が必要なだけです。