diff options
author | Florian Bruhin <git@the-compiler.org> | 2015-01-31 22:38:31 +0100 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2015-02-11 23:12:32 +0100 |
commit | 51549fc17f4370742a6c4799b89f836bbd312d1e (patch) | |
tree | eee82e3a788a051c4e5ef9c915ed109cc519941e | |
parent | 38a236a31a6c3385019d8ae76a3e96985727db4f (diff) | |
download | qutebrowser-51549fc17f4370742a6c4799b89f836bbd312d1e.tar.gz qutebrowser-51549fc17f4370742a6c4799b89f836bbd312d1e.zip |
Hide adblocked iframes.
We now hide iframes which have been blocked completely instead of displaying an
error page in there. Displaying the error page also did break back/forward,
e.g. on reddit.
Fixes #493.
-rw-r--r-- | qutebrowser/browser/webpage.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/qutebrowser/browser/webpage.py b/qutebrowser/browser/webpage.py index 2a89f60d9..9c7eb6864 100644 --- a/qutebrowser/browser/webpage.py +++ b/qutebrowser/browser/webpage.py @@ -121,8 +121,17 @@ class BrowserPage(QWebPage): else: error_str = info.errorString if error_str == networkmanager.HOSTBLOCK_ERROR_STRING: + # We don't set error_occured in this case. error_str = "Request blocked by host blocker." - # we don't set error_occured in this case. + main_frame = info.frame.page().mainFrame() + if info.frame != main_frame: + # Content in an iframe -> Hide the frame so it doesn't use + # any space. We can't hide the frame's documentElement + # directly though. + for elem in main_frame.documentElement().findAll('iframe'): + if QUrl(elem.attribute('src')) == info.url: + elem.setAttribute('style', 'display: none') + return False else: self._ignore_load_started = True self.error_occured = True |