parent
9cc688ea2b
commit
695a2656fe
@ -500,18 +500,18 @@ class WebEngineElements(browsertab.AbstractElements):
|
|||||||
callback(elem)
|
callback(elem)
|
||||||
|
|
||||||
def find_css(self, selector, callback, *, only_visible=False):
|
def find_css(self, selector, callback, *, only_visible=False):
|
||||||
js_code = javascript.assemble('webelem', 'find_all', selector,
|
js_code = javascript.assemble('webelem', 'find_css', selector,
|
||||||
only_visible)
|
only_visible)
|
||||||
js_cb = functools.partial(self._js_cb_multiple, callback)
|
js_cb = functools.partial(self._js_cb_multiple, callback)
|
||||||
self._tab.run_js_async(js_code, js_cb)
|
self._tab.run_js_async(js_code, js_cb)
|
||||||
|
|
||||||
def find_id(self, elem_id, callback):
|
def find_id(self, elem_id, callback):
|
||||||
js_code = javascript.assemble('webelem', 'element_by_id', elem_id)
|
js_code = javascript.assemble('webelem', 'find_id', elem_id)
|
||||||
js_cb = functools.partial(self._js_cb_single, callback)
|
js_cb = functools.partial(self._js_cb_single, callback)
|
||||||
self._tab.run_js_async(js_code, js_cb)
|
self._tab.run_js_async(js_code, js_cb)
|
||||||
|
|
||||||
def find_focused(self, callback):
|
def find_focused(self, callback):
|
||||||
js_code = javascript.assemble('webelem', 'focus_element')
|
js_code = javascript.assemble('webelem', 'find_focused')
|
||||||
js_cb = functools.partial(self._js_cb_single, callback)
|
js_cb = functools.partial(self._js_cb_single, callback)
|
||||||
self._tab.run_js_async(js_code, js_cb)
|
self._tab.run_js_async(js_code, js_cb)
|
||||||
|
|
||||||
@ -519,7 +519,7 @@ class WebEngineElements(browsertab.AbstractElements):
|
|||||||
assert pos.x() >= 0
|
assert pos.x() >= 0
|
||||||
assert pos.y() >= 0
|
assert pos.y() >= 0
|
||||||
pos /= self._tab.zoom.factor()
|
pos /= self._tab.zoom.factor()
|
||||||
js_code = javascript.assemble('webelem', 'element_at_pos',
|
js_code = javascript.assemble('webelem', 'find_at_pos',
|
||||||
pos.x(), pos.y())
|
pos.x(), pos.y())
|
||||||
js_cb = functools.partial(self._js_cb_single, callback)
|
js_cb = functools.partial(self._js_cb_single, callback)
|
||||||
self._tab.run_js_async(js_code, js_cb)
|
self._tab.run_js_async(js_code, js_cb)
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
* The connection for web elements between Python and Javascript works like
|
* The connection for web elements between Python and Javascript works like
|
||||||
* this:
|
* this:
|
||||||
*
|
*
|
||||||
* - Python calls into Javascript and invokes a function to find elements (like
|
* - Python calls into Javascript and invokes a function to find elements (one
|
||||||
* find_all, focus_element, element_at_pos or element_by_id).
|
* of the find_* functions).
|
||||||
* - Javascript gets the requested element, and calls serialize_elem on it.
|
* - Javascript gets the requested element, and calls serialize_elem on it.
|
||||||
* - serialize_elem saves the javascript element object in "elements", gets some
|
* - serialize_elem saves the javascript element object in "elements", gets some
|
||||||
* attributes from the element, and assigns an ID (index into 'elements') to
|
* attributes from the element, and assigns an ID (index into 'elements') to
|
||||||
@ -144,7 +144,7 @@ window._qutebrowser.webelem = (function() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
funcs.find_all = function(selector, only_visible) {
|
funcs.find_css = function(selector, only_visible) {
|
||||||
var elems = document.querySelectorAll(selector);
|
var elems = document.querySelectorAll(selector);
|
||||||
var out = [];
|
var out = [];
|
||||||
|
|
||||||
@ -157,7 +157,12 @@ window._qutebrowser.webelem = (function() {
|
|||||||
return out;
|
return out;
|
||||||
};
|
};
|
||||||
|
|
||||||
funcs.focus_element = function() {
|
funcs.find_id = function(id) {
|
||||||
|
var elem = document.getElementById(id);
|
||||||
|
return serialize_elem(elem);
|
||||||
|
};
|
||||||
|
|
||||||
|
funcs.find_focused = function() {
|
||||||
var elem = document.activeElement;
|
var elem = document.activeElement;
|
||||||
|
|
||||||
if (!elem || elem === document.body) {
|
if (!elem || elem === document.body) {
|
||||||
@ -169,6 +174,16 @@ window._qutebrowser.webelem = (function() {
|
|||||||
return serialize_elem(elem);
|
return serialize_elem(elem);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
funcs.find_at_pos = function(x, y) {
|
||||||
|
// FIXME:qtwebengine
|
||||||
|
// If the element at the specified point belongs to another document
|
||||||
|
// (for example, an iframe's subdocument), the subdocument's parent
|
||||||
|
// element is returned (the iframe itself).
|
||||||
|
|
||||||
|
var elem = document.elementFromPoint(x, y);
|
||||||
|
return serialize_elem(elem);
|
||||||
|
};
|
||||||
|
|
||||||
// Function for returning a selection to python (so we can click it)
|
// Function for returning a selection to python (so we can click it)
|
||||||
funcs.find_selected_link = function() {
|
funcs.find_selected_link = function() {
|
||||||
var elem = window.getSelection().anchorNode;
|
var elem = window.getSelection().anchorNode;
|
||||||
@ -188,21 +203,6 @@ window._qutebrowser.webelem = (function() {
|
|||||||
document.execCommand("insertText", false, text);
|
document.execCommand("insertText", false, text);
|
||||||
};
|
};
|
||||||
|
|
||||||
funcs.element_at_pos = function(x, y) {
|
|
||||||
// FIXME:qtwebengine
|
|
||||||
// If the element at the specified point belongs to another document
|
|
||||||
// (for example, an iframe's subdocument), the subdocument's parent
|
|
||||||
// element is returned (the iframe itself).
|
|
||||||
|
|
||||||
var elem = document.elementFromPoint(x, y);
|
|
||||||
return serialize_elem(elem);
|
|
||||||
};
|
|
||||||
|
|
||||||
funcs.element_by_id = function(id) {
|
|
||||||
var elem = document.getElementById(id);
|
|
||||||
return serialize_elem(elem);
|
|
||||||
};
|
|
||||||
|
|
||||||
funcs.set_attribute = function(id, name, value) {
|
funcs.set_attribute = function(id, name, value) {
|
||||||
elements[id].setAttribute(name, value);
|
elements[id].setAttribute(name, value);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user