aboutsummaryrefslogtreecommitdiffstats
path: root/doc/src/qml/hostenvironment.qdoc
blob: b0d91189448f56474df74d6af6b2c93f4886472b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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.

*/