[Interest] Fixing up console.log() in QtWebEngine

Steve Atkins steve at blighty.com
Wed Mar 6 18:58:29 CET 2019



> On Mar 6, 2019, at 2:14 PM, Kai Köhne <Kai.Koehne at qt.io> wrote:
> 
> Hi Steve,
> 
> I agree with you that the current console.log behavior in Qt WebEngine is pretty basic. Anyhow, looking at the code the problem can be traced back to v8, Chromium's JavaScript engine:
> 
> https://bugs.chromium.org/p/v8/issues/detail?id=5579
> https://955-bad0a5abd2d1-tainted-dot-chromiumcodereview.appspot.com/2899113003/
> 
> So it looks like fixing this would either above change to be merged, or finding other ways to get the same information ...

Thanks.

Digging deeper it looks like several projects have flagged it as an issue and there's work in progress to support multiple parameters and % escapes (though not handling objects) going on fairly recently at https://chromium-review.googlesource.com/c/v8/v8/+/1374595

With luck we should have most of the nice-to-have features once that gets integrated and we move to a new enough version.

Cheers,
  Steve

> 
> Regards
> 
> Kai
> 
> PS: webengine at qt-project.org is arguably the better mailing list for discussion implementation details like this, CC'ed
> From: Interest <interest-bounces at qt-project.org> on behalf of Steve Atkins <steve at blighty.com>
> Sent: Monday, March 4, 2019 2:42:12 PM
> To: Qt Project
> Subject: [Interest] Fixing up console.log() in QtWebEngine
>  
> In a normal web browser console.log() takes one or more values as parameters and renders them for the user in some appropriate way. If the first parameter is a string containing %s style escapes it'll do some printf style formatting of the remaining parameters. ( https://developers.google.com/web/tools/chrome-devtools/console/api#log ).
> 
> Inside a QtWebEngine page console.log() accepts any number of parameters of any type. But by the time we get to Qt it arrives as QWebEnginePage::javaScriptConsoleMessage(QWebEnginePage::JavaScriptConsoleMessageLevellevel, const QString &message, int lineNumber, const QString &sourceID)
> 
> The first parameter of console.log() is converted to a string - e.g. "[Object object]" - and delivered as a QString. The remaining parameters are discarded.
> 
> That's better than nothing, but still a little annoying if you're working on javascript logic running inside a Qt app.
> 
> Does anyone know where inside the Qt-Chromium interface I should start looking if I wanted to improve things?
> 
> Cheers,
>   Steve
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> https://lists.qt-project.org/listinfo/interest




More information about the Interest mailing list