Search code examples
javascriptqtqtwebkitqwebview

QWebView: Only disable javascript coming from websites?


I'm currently writing a small browser, and would like to interact with pages via Javascript (for example for GreaseMonkey-like userscripts).

However I'd like to disable loading of javascript of webpages via QWebSettings. Now when I do something like:

settings = QWebSettings.globalSettings()
settings.setAttribute(QWebSettings.JavascriptEnabled, False)

javascript from the web doesn't work, but things like evaluateJavaScript or addToJavaScriptWindowObject of QWebFrame don't work anymore either.

I believe dwb which is based on WebKitGTK circumvents this by using the JavaScriptCore library directly.

Can I do something similiar, like maybe use QtScript to evaluate the userscripts myself and bridge them to the webview somehow? Though this doesn't seem exactly like an easy solution to me.


Solution

  • Today I just noticed using evaluateJavaScript() on a QWebElement works even with javascript disabled.

    This means at least I can do something like:

    webview.page().mainFrame().documentElement().evaluateJavaScript("...")
    

    and that works fine.