Looks like the implementation was derived from Mozilla's
nsProxyAutoConfig.js, which is evaluated twice. It requires double
escaping.
In our case excessive escaping is harmful.
In particular it makes ip-matching regexp in isInNet() invalid and makes
it really slow as we go to dnsResolve() all the time, even when it's not
needed.
Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
We now use click() or focus() in JS if possible, or manually follow links in a
href attribute.
While this probably introduces some new corner cases, it fixes a handful of
older ones:
- window.open() in JS can now be handled correctly as we don't need hacks in
createWindow anymore.
- Focusing input fields with images now works - fixes#1613, #1879
- Hinting now works better on QtWebEngine with Qt 5.8 - fixes#2273
Also see #70.
webelem.text() was only used without use_js=True from webelem.__str__.
Now we instead default to the use_js=True behavior and renamed the
method from text() to value().
The old behavior is instead directly implemented in __str__.
This changes how webelem.value (aka text) handles elements for which
is_content_editable() returns True, but I haven't found any cases where
this makes a difference.
This also fixes getting existing text from elements with QtWebEngine,
which closes#1957.
This reverts commit 0c5d95c943.
Using those values is probably okay as long as we adjust for the
off-by-one errors which will follow in the next commit.
scroll measures failed a travis test where document.documentElement.offsetHeight and document.documentElement.scrollHeight diffed by one pixel when the browser zoomed. --> Removed offsetHeight.
It seems with document.documentElement.client{Height,Width} we
sometimes (e.g. without <!DOCTYPE html)...) get the full element height
instead of the viewport height.
Fixes#1821.
We now load the JS code as a QWebEngineScript, which sets up
window._qutebrowser with various "modules". That means we don't have to
pass the whole module every time we want to execute something.
It doesn't actually work yet (as it claims the field is not editable),
but at least does not crash when the backend limitation for the command
is removed.
With QtWebKit or QtWebEngine with Qt < 5.7, the functions end up in the
page's namespace. We can't easily avoid this, but at least we can name
them in a way which reduces conflicts.
"createNodeIterator() and createTreeWalker() now have optional arguments and
lack a fourth argument which is no longer relevant given entity references
never made it into the DOM."