[Development] Qt WebChannel 5.5 roadmap: WebEngine, QtWebView
Milian Wolff
mail at milianw.de
Wed Aug 27 22:02:54 CEST 2014
On Wednesday 27 August 2014 19:42:02 Sorvig Morten wrote:
> > On 27 Aug 2014, at 16:51, Milian Wolff <milian.wolff at kdab.com> wrote:
> >
> > On Wednesday 27 August 2014 14:49:08 Hausmann Simon wrote:
> >
> >> I'm pretty sure that all the "native" webview APIs allow for at least
> >> runJavascript(string), so injection may also be an easier option.
> >
> >
> > Oh nice, I assumed without testing nor reading code that the QtWebView API
> >
would be very minimal and thus not even supply such an API. If it does
> > exist then yes, I think just injecting the qwebchannel.js contents and a
> > simple schim to setup the WebSocket would be best.
>
>
> It’s not there today but I think we could add it. The function is useful for
> extending QtWebView beyond the current API.
> What should the function signature be? Looking at the existing classes:
>
> UIWebView:
> - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
.
>
> WKWebView:
> - (void) evaluateJavaScript:(NSString *) javaScriptString
> completionHandler:(void (^)(id, NSError *))completionHandler;
> android.webkit.WebView:
> void evaluateJavascript(String script, ValueCallback<String>
> resultCallback)
> QWebEnginePage:
> void runJavaScript(const QString& scriptSource, const
> QWebEngineCallback<const QVariant &> &resultCallback);
> API Options:
>
> void runJavascript(const QString &script) // asynchronous if possible
> QString runJavascript(const QString &script) // synchronous
> template <typename C> void runJavascript(const QString &script, C callback)
> // Use a C++11 lambda function
> I think I would like to avoid adding a callback-class based API, let’s go
> for a more modern variant. Returning a result makes the function more
> useful, but with a simple function this comes at the cost of making it
> synchronous. UIWebView does not seem to support asynchornous evaluation in
> any case, but we can live with that until WKWebView is available (which is
> iOS8, OS X10.10).
A synchronous API is bound to fail, see WK1 vs. WK2/WebEngine. Make it
asynchronous and copy the WebEngine API.
Bye
--
Milian Wolff
mail at milianw.de
http://milianw.de
More information about the Development
mailing list