在Python中找不到DOMEventTarget.add_event_listener

我正在将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 ++中使用的相同方案,我只需要某种方法来注册一个回调,该回调每次在页面上的某些元素上的焦点更改时都将调用


梦里花落0921
浏览 207回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python