On Fri, May 7, 2010 at 7:15 AM, Jack Wootton <[email protected]> wrote:
> Thank you for this clarification and clear example. I'm very impressed so > far with the flexibility QML provides in terms of communication between C++ > > QML > JavaScript Context. > > > On Fri, May 7, 2010 at 6:52 AM, <[email protected]> wrote: > >> Hi, >> >> Yes the documentation is out of date. The fact that the property is >> marked as read-only is a qdoc bug. >> >> I’ve updated the docs. As it will take a while to make it through our CI >> system, I’ve included the change here. >> >> /*! >> \qmlproperty list<object> WebView::javaScriptWindowObjects >> >> A list of QML objects to expose to the web page. >> >> Each object will be added as a property of the web frame's window >> object. The >> property name is controlled by the value of \c >> WebView.windowObjectName >> attached property. >> >> Exposing QML objects to a web page allows JavaScript executing in the >> web >> page itself to communicate with QML, by reading and writing properties >> and >> by calling methods of the exposed QML objects. >> >> This example shows how to call into a QML method using a window >> object. >> >> \qml >> WebView { >> javaScriptWindowObjects: QtObject { >> WebView.windowObjectName: "qml" >> >> function qmlCall() { >> console.log("This call is in QML!"); >> } >> } >> >> html: "<script>console.log(\"This is in WebKit!\"); >> window.qml.qmlCall();</script>" >> } >> \endqml >> >> The output of the example will be: >> \code >> This is in WebKit! >> This call is in QML! >> \endcode >> >> If Javascript is not enabled for the page, then this property does >> nothing. >> */ >> >> As an aside, there is also a bug that prevents calling methods declared in >> QML (like that in the example), but there is also a fix for that working >> through our system. For the time being, you can communicate using property >> values or methods defined in C++. >> > I have tried using the example code oyu provided, and as you pointed out, it doesn't work. You suggest and alternative of using property values or methods defined in C++, but how are these made available to WebKit? I have added a C++ object to the context the QML document is loaded into, but this doesn't make the objet accessible from within Webkit. > >> Cheers, >> >> Aaron >> >> >> On 6/05/10 11:43 PM, "ext Jack Wootton" <[email protected]> wrote: >> >> It seems the wording of the documentation has been copied from the >> documentation for QWebFrame::addToJavaScriptWindowObject in Qt 4.6: >> >> http://doc.qt.nokia.com/4.6/qwebframe.html#addToJavaScriptWindowObject >> >> Is the reason for the confusing documentation? >> >> Cheers, >> Jack >> >> On Thu, May 6, 2010 at 2:37 PM, Jack Wootton <[email protected]> >> wrote: >> >> Hello, >> >> I hope someone can provide clarification on the documentation for QML >> WebView. >> >> Reading the documentation for Qt 4.7 QML WebView, specifically the >> property javaScriptWindowObjects: >> >> >> http://doc.qt.nokia.com/4.7-snapshot/qml-webview.html#javaScriptWindowObjects-prop >> >> Firstly the documentation states: "This property is a list of object that >> are available from within the webview's JavaScript context.". So this >> returns a list of all objects available in the JavaScript context for the >> document the WebView is currently displaying? I expect this would include >> objects such as "document" and "window"? >> >> Secondly the documentation states: "The *object* will be inserted as a >> child of the frame's window object, under the name given by the attached >> property WebView.windowObjectName.". This seems at odss with a read-only >> property? It seems to suggest that C++ objects can be made available in the >> JavaScipt context of the document currently being displayed in the WebView? >> >> Thirdly the documentation states: "Properties of the object will be >> exposed as JavaScript properties and slots as JavaScript methods.". Again, >> I do not understand how C++ objects can be made inserted into a JavaScript >> context using a read-only property of WebView. >> >> Lastly, an example is given: >> >> WebView { >> >> >> >> javaScriptWindowObjects: Object { >> WebView.windowObjectName: "coordinates" >> } >> } >> >> In this example, what is "Object"? A C++ object? A JavaScript object? >> >> > > > -- > Regards > Jack > -- Regards Jack
_______________________________________________ Qt4-preview-feedback mailing list [email protected] http://lists.trolltech.com/mailman/listinfo/qt4-preview-feedback
