我正在将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延伸),但它缺少一起remove_event_listener,但dispatch_event不知何故使得它这可能是由于,这个WebKit的错误; 我不确定
有什么办法可以在Python中做到这一点吗?它不必使用我在C ++中使用的相同方案,我只需要某种方法来注册一个回调,该回调每次在页面上的某些元素上的焦点更改时都将调用
相关分类