Begin documenting QML's JS environment.
authorMichael Brasser <michael.brasser@nokia.com>
Wed, 26 Oct 2011 03:41:41 +0000 (13:41 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Apr 2012 04:53:11 +0000 (06:53 +0200)
Provide a basic overview of QML's JavaScript host environment
that can be expanded as needed.

Change-Id: I1f178a9de26bd3ea6f5707821518419f76ab279d
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
doc/src/qml/external-resources.qdoc
doc/src/qml/hostenvironment.qdoc [new file with mode: 0644]
doc/src/qml/qmlengine.qdoc
doc/src/qml/qmli18n.qdoc

index b4aecba..386992f 100644 (file)
@@ -28,5 +28,8 @@
 /*!
     \externalpage http://www.ecma-international.org/publications/standards/Ecma-262.htm
     \title ECMA-262
+
+    \externalpage http://www.w3schools.com/jsref/default.asp
+    \title W3Schools JavaScript Reference
 */
 
diff --git a/doc/src/qml/hostenvironment.qdoc b/doc/src/qml/hostenvironment.qdoc
new file mode 100644 (file)
index 0000000..b0d9118
--- /dev/null
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms
+** and conditions contained in a signed written agreement between you
+** and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\page qmlhostenvironment.html
+\title QML JavaScript Host Environment
+
+QML provides a JavaScript host environment tailored to writing QML applications.
+This environment is different from the host environment provided by a browser
+or a server-side JavaScript environment such as Node.js. For example, QML does
+not provide a \c window object or \c{DOM API} as commonly found in a browser environment.
+
+\section1 Common Base
+
+Like a browser or server-side JavaScript environment, the QML runtime implements the
+\l{ECMA-262}{ECMAScript Language Specification} standard. This provides access to
+all of the built-in types and functions defined by the standard, such as Object, Array, and Math.
+The QML runtime implements the 5th edition of the standard, which is the same edition commonly
+implemented by browsers.
+
+The standard ECMAScript built-ins are not explicitly documented in the QML documentation. For more
+information on their use, please refer to the ECMA-262 5th edition standard or one of the many online
+JavaScript reference and tutorial sites, such as the \l{W3Schools JavaScript Reference} (JavaScript Objects
+Reference section). Many sites focus on JavaScript in the browser, so in some cases you may need to double
+check the specification to determine whether a given function or object is part of standard ECMAScript or
+specific to the browser environment. In the case of the W3Schools link above, the \c{JavaScript Objects
+Reference} section generally covers the standard, while the \c{Browser Objects Reference} and \c{HTML DOM
+Objects Reference} sections are browser specific (and thus not applicable to QML).
+
+\section1 Host Objects and Functions
+
+The QML JavaScript host environment implements the following host objects and functions:
+
+\list
+\li The \l{QmlGlobalQtObject}{Qt object}: This object is specific to QML, and provides helper methods
+    and properties specific to the QML environment.
+\li qsTr(), qsTranslate(), qsTrId(), QT_TR_NOOP(), QT_TRANSLATE_NOOP(), and QT_TRID_NOOP() functions:
+    These functions are specific to QML, and provide \l{Translation}{translation capabilities} to the QML environment.
+\li gc() function: This function is specific to QML, and provides a way to manually trigger garbage collection.
+\li print() function: This function is specific to QML, and provides a simple way to output information to the console.
+\li The \l{Console API}{console object}: This object implements a subset of the \l{http://getfirebug.com/wiki/index.php/Console_API}{FireBug Console API}.
+\li \l{XMLHttpRequest}, DOMException: These objects implement a subset of the \l{http://www.w3.org/TR/XMLHttpRequest/}{W3C XMLHttpRequest specification}.
+\endlist
+
+See \l{QML Global Object} for more details on these host objects and functions.
+
+\section1 Native Object Modification
+
+QML makes the following modifications to native objects:
+
+\list
+\li An arg() function is added to the String prototype.
+\li Locale-aware coversion functions are added to the \l{Date} and \l{Number} prototypes.
+\endlist
+
+\section1 Restrictions
+
+QML implements the following restrictions for JavaScript code:
+
+\list
+\li JavaScript code cannot modify the global object.
+\li Global code is run in a reduced scope.
+\li The value of \c this is undefined in QML in the majority of contexts.
+\endlist
+
+See \l {QML JavaScript Restrictions} for more details on these restrictions.
+
+*/
index b0754fe..ad77d43 100644 (file)
@@ -467,9 +467,13 @@ specified in QML files, plugins, or applications.
 
 \section1 JavaScript Runtime
 
-    The runtime implements the \l{ECMA-262}{ECMAScript Language Specification} standard.
-    The reserved words, conditionals, variables, and object behaviors follow
-    after the standard.
+    The runtime implements the \l{ECMA-262}{ECMAScript Language Specification} standard,
+    5th edition. The reserved words, conditionals, variables, and object behaviors
+    follow after the standard.
+
+    The \l{QML JavaScript Host Environment} article has information about the
+    JavaScript host environment provided by QML, which is different than the
+    browser host environment many are familiar with.
 
     The \l{JavaScript Code} article has information about placing JavaScript
     code within QML code.
index d15beaf..b65c001 100644 (file)
@@ -33,8 +33,8 @@
 
 \section1 Translation
 
-Strings in QML can be marked for translation using the qsTr(), qsTranslate(),
-QT_TR_NOOP(), and QT_TRANSLATE_NOOP() functions.
+Strings in QML can be marked for translation using the qsTr(), qsTranslate(), qsTrId(),
+QT_TR_NOOP(), QT_TRANSLATE_NOOP(), and QT_TRID_NOOP() functions.
 
 For example:
 \qml