/**************************************************************************** ** ** 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. */