Comparison of layout engines (ECMAScript)
From Wikipedia, the free encyclopedia
The following tables compare ECMAScript (particularly JavaScript) support for a number of layout engines. Please see the individual products' articles for further information. This article is not all-inclusive or necessarily up-to-date. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.
[edit] Explanation of the tables
[edit] Engine nomenclature
Rather than the names of web browsers, the names of the underlying engines are used. The browsers that use the various engines are listed below.
| Layout engine |
Release version |
Preview version |
Used by |
| Amaya |
11.3.1 |
11.3-pre |
Amaya |
| Gecko |
9.01 |
10.0b5 |
All Mozilla software, including Firefox; SeaMonkey and Galeon; Camino; K-Meleon; Flock (up to 2.x); Epiphany-gecko; Debian IceWeasel; GNU IceCat (formerly GNU IceWeasel); Icedove, Iceape and Iceowl; Fennec. Also used by the Maple platform in 2010 and 2011 Samsung "SmartTV" devices which are based on the build used in Firefox 3.0. |
| KHTML |
|
N/A |
Konqueror |
| Presto |
2.10.229 |
2.10.238 |
Opera; Opera Mobile, Nintendo DS & DSi Browser; Internet Channel |
| Prince |
7.1 |
N/A |
Prince XML |
| Tasman |
(IE 5.2.3 for Mac) |
none (aborted in 2003) |
Internet Explorer 5+ for Mac OS X |
| Trident |
5.0 (IE 9) |
6.0 (IE 10) |
Internet Explorer and other Internet Explorer shells like Maxthon (Microsoft Windows operating systems only), Windows Phone 7 |
| WebKit |
534.20 |
r83424 |
Safari (both desktop and mobile), Google Chrome, Maxthon 3, Shiira, iCab 4, OmniWeb 5.5+, Epiphany, Adobe AIR, Midori, Adobe Dreamweaver CS4 and CS5, Android browser, Palm webOS browser, Symbian S60 browser, OWB, Steam, Rekonq, Arora, Flock (version 3+), RockMelt. Used by the LG Smart TV platform to enable web content on TVs. |
[edit] Values
Values indicate the level of support in the most recent version of the layout engine, or (if a version number is given) in the specified version. Version numbers without any other value indicate the version at which the layout engine first fully supported the feature.
| Value |
Meaning |
| Yes |
Indicates that the layout engine fully supports this property/element when valid values are used. |
| No |
Indicates that the property/element is completely ignored. |
| Partial |
Indicates that the property/element is understood, but that not all values are supported. Supported values are implemented correctly. |
| Incorrect |
Indicates that the property/element is understood, but that it is not implemented correctly in all cases. |
| Experimental |
Indicates that the property/element is understood, but supported under an alternate name. May be incomplete or buggy. |
| Dropped |
Indicates that the property/element is no longer supported. |
| Nightly build |
Indicates that the property/element is supported to some extent in an experimental/nightly build. Future support is expected. |
| Depends |
Indicates that the property/element is supported only on certain platforms, or if certain settings are configured. |
[edit] ECMAScript version support
[edit] Standard Library
[edit] Global object
|
Trident |
Gecko |
WebKit |
Presto |
| Value properties |
NaN |
4.0 |
0.6 |
Yes |
Yes |
Infinity |
4.0 |
0.6 |
Yes |
Yes |
undefined |
5.5 |
0.6 |
Yes |
Yes |
| Function properties |
eval(x) |
3.0 |
0.6 |
Yes |
Yes |
parseInt(string [, radix]) |
3.0 |
0.6 |
Yes |
Yes |
parseFloat(string) |
3.0 |
0.6 |
Yes |
Yes |
isNaN(number) |
4.0 |
0.6 |
Yes |
Yes |
isFinite(number) |
4.0 |
0.6 |
Yes |
Yes |
| URI handling functions |
decodeURI(encodedURI) |
5.5 |
0.6 |
Yes |
Yes |
decodeURIComponent(encodedURIComponent) |
5.5 |
0.6 |
Yes |
Yes |
encodeURI(uri) |
5.5 |
0.6 |
Yes |
Yes |
encodeURIComponent(uriComponent) |
5.5 |
0.6 |
Yes |
Yes |
| Constructor properties |
Object |
4.0 |
Yes |
Yes |
Yes |
Function |
4.0 |
Yes |
Yes |
Yes |
Array |
4.0 |
Yes |
Yes |
Yes |
String |
3.0 |
Yes |
Yes |
Yes |
Boolean |
3.0 |
Yes |
Yes |
Yes |
Number |
3.0 |
Yes |
Yes |
Yes |
Date |
3.0 |
Yes |
Yes |
Yes |
RegExp |
4.0 |
Yes |
Yes |
Yes |
Error |
5.0 |
Yes |
Yes |
Yes |
EvalError |
5.0 |
Yes |
Yes |
No |
RangeError |
5.0 |
Yes |
Yes |
No |
ReferenceError |
5.0 |
Yes |
Yes |
No |
SyntaxError |
5.0 |
Yes |
Yes |
No |
TypeError |
5.0 |
Yes |
Yes |
No |
URIError |
5.0 |
Yes |
Yes |
No |
| Other properties |
Math |
3.0 |
Yes |
Yes |
Yes |
| Additional properties |
escape(string) |
3.0 |
Yes |
Yes |
Yes |
unescape(string) |
3.0 |
Yes |
Yes |
Yes |
[edit] Object object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Object([value]) |
Yes |
Yes |
Yes |
Yes |
| Called as constructor |
new Object([value]) |
4.0 |
Yes |
Yes |
Yes |
| Properties |
prototype |
4.0 |
Yes |
Yes |
Yes |
| Properties of prototype |
constructor |
4.0 |
Yes |
Yes |
Yes |
toString() |
4.0 |
Yes |
Yes |
Yes |
toLocaleString() |
4.0 |
Yes |
Yes |
Yes |
valueOf() |
4.0 |
Yes |
Yes |
Yes |
hasOwnProperty(V) |
5.5 |
Yes |
3 |
Yes |
isPrototypeOf(V) |
5.5 |
Yes |
3 |
Yes |
propertyIsEnumerable(V) |
5.5 |
Yes |
3 |
Yes |
[edit] Function object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Function([[p1 [, p2 [, ...]],] body]) |
? |
? |
? |
? |
| Called as constructor |
new Function([[p1 [, p2 [, ...]],] body]) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties |
length |
? |
1.0 |
? |
Yes |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
length |
? |
1.0 |
? |
? |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
toString() |
4.0 |
1.0 |
Yes |
1.0 |
apply(thisArg, argArray) |
4.0 |
1.0 |
Yes |
1.0 |
call(thisArg [, arg1 [, arg2 [, ...]]]) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of instances |
length |
4.0 |
1.0 |
Yes |
1.0 |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
[edit] Array object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Array([item1 [, item2 [, ...]]]) |
? |
? |
? |
? |
| Called as constructor |
new Array([item1, item2 [, ...]]) |
4.0 |
1.0 |
Yes |
1.0 |
new Array(len) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
toString() |
4.0 |
1.0 |
Yes |
1.0 |
toLocaleString() |
5.5 |
1.0 |
Yes |
1.0 |
concat([item1 [, item2 [,...]]]) |
4.0 |
1.0 |
Yes |
1.0 |
join(separator) |
4.0 |
1.0 |
Yes |
1.0 |
pop() |
5.5 |
1.0 |
Yes |
1.0 |
push([item1 [, item2 [,...]]]) |
5.5 |
1.0 |
Yes |
1.0 |
reverse() |
4.0 |
1.0 |
Yes |
1.0 |
shift() |
5.5 |
1.0 |
Yes |
1.0 |
slice(start, end) |
4.0 |
1.0 |
Yes |
1.0 |
sort(comparefn) |
4.0 |
1.0 |
Yes |
1.0 |
splice(start, deleteCount [, item1 [, item2 [, ...]]]) |
5.5 |
1.0 |
Yes |
1.0 |
unshift([item1 [, item2 [, ...]]]) |
5.5 |
1.0 |
Yes |
1.0 |
indexOf(searchElement[, fromIndex]) |
9.0[1] |
1.8 |
522 |
2.1 |
lastIndexOf(searchElement[, fromIndex]) |
1.8 |
522 |
2.1 |
filter(callback[, thisObject]) |
1.8 |
522 |
2.1 |
forEach(callback[, thisObject]) |
1.8 |
522 |
2.1 |
every(callback[, thisObject]) |
1.8 |
522 |
2.1 |
map(callback[, thisObject]) |
1.8 |
522 |
2.1 |
some(callback[, thisObject]) |
1.8 |
522 |
2.1 |
reduce(callback[, initialValue]) |
1.9 |
528 |
2.5.22 |
reduceRight(callback[, initialValue]) |
1.9 |
528 |
2.5.22 |
| Properties of instances |
length |
4.0 |
1.0 |
Yes |
1.0 |
[edit] String object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
String([value]) |
? |
? |
? |
? |
| Called as constructor |
new String([value]) |
3.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
fromCharCode([char0 [, char1 [, ...]]]) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
toString() |
3.0 |
1.0 |
Yes |
1.0 |
valueOf() |
3.0 |
1.0 |
Yes |
1.0 |
charAt(pos) |
3.0 |
1.0 |
Yes |
1.0 |
charCodeAt(pos) |
5.5 |
1.0 |
Yes |
1.0 |
concat([string1 [, string2 [, ...]]]) |
4.0 |
1.0 |
Yes |
1.0 |
indexOf(searchString, position) |
3.0 |
1.0 |
Yes |
1.0 |
lastIndexOf(searchString, position) |
3.0 |
1.0 |
Yes |
1.0 |
localeCompare(that) |
5.5 |
1.0 |
Yes |
1.0 |
match(regexp) |
4.0 |
1.0 |
Yes |
1.0 |
replace(searchValue, replaceValue) |
3.0 |
1.0 |
Yes |
1.0 |
search(regexp) |
4.0 |
1.0 |
Yes |
1.0 |
slice(start, end) |
4.0 |
1.0 |
Yes |
1.0 |
split(separator, limit) |
4.0 |
1.0 |
Yes |
1.0 |
substring(start, end) |
3.0 |
1.0 |
Yes |
1.0 |
toLowerCase() |
3.0 |
1.0 |
Yes |
1.0 |
toLocaleLowerCase(comparefn) |
3.0 |
1.0 |
No |
1.0 |
toUpperCase() |
3.0 |
1.0 |
Yes |
1.0 |
toLocaleUpperCase() |
3.0 |
1.0 |
No |
1.0 |
| Additional properties of prototype |
substr(start, length) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of instances |
length |
3.0 |
1.0 |
Yes |
1.0 |
[edit] Boolean object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Boolean([value]) |
? |
? |
Yes |
? |
| Called as constructor |
new Boolean([value]) |
3.0 |
Yes |
Yes |
Yes |
| Properties |
prototype |
4.0 |
Yes |
Yes |
Yes |
| Properties of prototype |
constructor |
4.0 |
Yes |
Yes |
Yes |
toString() |
4.0 |
Yes |
Yes |
Yes |
valueOf() |
4.0 |
Yes |
Yes |
Yes |
[edit] Number object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Number([value]) |
? |
? |
Yes |
? |
| Called as constructor |
new Number([value]) |
3.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
MAX_VALUE |
4.0 |
1.0 |
Yes |
1.0 |
MIN_VALUE |
4.0 |
1.0 |
Yes |
1.0 |
NaN |
4.0 |
1.0 |
Yes |
1.0 |
NEGATIVE_INFINITY |
4.0 |
1.0 |
Yes |
1.0 |
POSITIVE_INFINITY |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
toString([radix]) |
4.0 |
1.0 |
Yes |
1.0 |
toLocaleString() |
5.5 |
1.0 |
Yes |
1.0 |
valueOf() |
4.0 |
1.0 |
Yes |
1.0 |
toFixed(fractionDigits) |
5.5 |
1.0 |
Yes |
1.0 |
toExponential(fractionDigits) |
5.5 |
1.0 |
Yes |
1.0 |
toPrecision(precision) |
5.5 |
1.0 |
Yes |
1.0 |
[edit] Math object
|
Trident |
Gecko |
WebKit |
Presto |
| Value properties |
E |
3.0 |
1.0 |
Yes |
1.0 |
LN10 |
3.0 |
1.0 |
Yes |
1.0 |
LN2 |
3.0 |
1.0 |
Yes |
1.0 |
LOG2E |
3.0 |
1.0 |
Yes |
1.0 |
LOG10E |
3.0 |
1.0 |
Yes |
1.0 |
PI |
Yes |
Yes |
Yes |
Yes |
SQRT1_2 |
3.0 |
1.0 |
Yes |
1.0 |
SQRT2 |
Yes |
Yes |
Yes |
Yes |
| Function properties |
abs(x) |
3.0 |
1.0 |
Yes |
1.0 |
acos(x) |
3.0 |
1.0 |
Yes |
1.0 |
asin(x) |
3.0 |
1.0 |
Yes |
1.0 |
atan(x) |
3.0 |
1.0 |
Yes |
1.0 |
atan2(y, x) |
3.0 |
1.0 |
Yes |
1.0 |
ceil(x) |
3.0 |
1.0 |
Yes |
1.0 |
cos(x) |
3.0 |
1.0 |
Yes |
1.0 |
exp(x) |
3.0 |
1.0 |
Yes |
1.0 |
floor(x) |
3.0 |
1.0 |
Yes |
1.0 |
log(x) |
3.0 |
1.0 |
Yes |
1.0 |
max([value1 [, value2 [, ...]]]) |
3.0 |
1.0 |
Yes |
1.0 |
min([value1 [, value2 [, ...]]]) |
3.0 |
1.0 |
Yes |
1.0 |
pow(x, y) |
3.0 |
1.0 |
Yes |
1.0 |
random() |
3.0 |
1.0 |
Yes |
1.0 |
round(x) |
3.0 |
1.0 |
Yes |
1.0 |
sin(x) |
3.0 |
1.0 |
Yes |
1.0 |
sqrt(x) |
3.0 |
1.0 |
Yes |
1.0 |
tan(x) |
3.0 |
1.0 |
Yes |
1.0 |
[edit] Date object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) |
? |
? |
? |
? |
| Called as constructor |
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) |
4.0 |
1.0 |
Yes |
1.0 |
new Date (value) |
4.0 |
1.0 |
Yes |
1.0 |
new Date () |
4.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
parse(string) |
3.0 |
1.0 |
Yes |
1.0 |
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) |
3.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
toString() |
4.0 |
1.0 |
Yes |
1.0 |
toDateString() |
4.0 |
1.0 |
Yes |
1.0 |
toTimeString() |
4.0 |
1.0 |
Yes |
1.0 |
toLocaleString() |
4.0 |
1.0 |
Yes |
1.0 |
toLocaleDateString() |
4.0 |
1.0 |
Yes |
1.0 |
toLocaleTimeString() |
4.0 |
1.0 |
Yes |
1.0 |
valueOf() |
4.0 |
1.0 |
Yes |
1.0 |
getTime() |
3.0 |
1.0 |
Yes |
1.0 |
getFullYear() |
4.0 |
1.0 |
Yes |
1.0 |
getMonth() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCMonth() |
4.0 |
1.0 |
Yes |
1.0 |
getDate() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCDate() |
4.0 |
1.0 |
Yes |
1.0 |
getDay() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCDay() |
4.0 |
1.0 |
Yes |
1.0 |
getHours() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCHours() |
4.0 |
1.0 |
Yes |
1.0 |
getMinutes() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCMinutes() |
4.0 |
1.0 |
Yes |
1.0 |
getSeconds() |
3.0 |
1.0 |
Yes |
1.0 |
getUTCSeconds() |
4.0 |
1.0 |
Yes |
1.0 |
getMilliseconds() |
4.0 |
1.0 |
Yes |
1.0 |
getUTCMilliseconds() |
4.0 |
1.0 |
Yes |
1.0 |
getTimezoneOffset() |
4.0 |
1.0 |
Yes |
1.0 |
setTime(time) |
3.0 |
1.0 |
Yes |
1.0 |
setMilliseconds(ms) |
4.0 |
1.0 |
Yes |
1.0 |
setUTCMilliseconds(ms) |
4.0 |
1.0 |
Yes |
1.0 |
setSeconds(sec [, ms]) |
3.0 |
1.0 |
Yes |
1.0 |
setUTCSeconds(sec [, ms]) |
4.0 |
1.0 |
Yes |
1.0 |
setMinutes(min [, sec [, ms]]) |
3.0 |
1.0 |
Yes |
1.0 |
setUTCMinutes(min [, sec [, ms]]) |
4.0 |
1.0 |
Yes |
1.0 |
setHours(hour [, min [, sec [, ms]]]) |
4.0 |
1.0 |
Yes |
1.0 |
setUTCHours(hour [, min [, sec [, ms]]]) |
4.0 |
1.0 |
Yes |
1.0 |
setDate(date) |
4.0 |
1.0 |
Yes |
1.0 |
setUTCDate(date) |
4.0 |
1.0 |
Yes |
1.0 |
setMonth(month [, date]) |
3.0 |
1.0 |
Yes |
1.0 |
setUTCMonth(month [, date]) |
4.0 |
1.0 |
Yes |
1.0 |
setFullYear(year [, month [, date]]) |
4.0 |
1.0 |
Yes |
1.0 |
setUTCFullYear(year [, month [, date]]) |
4.0 |
1.0 |
Yes |
1.0 |
toUTCString() |
4.0 |
1.0 |
Yes |
1.0 |
| Additional properties of prototype |
getYear() |
3.0 |
1.0 |
Yes |
1.0 |
setYear(year) |
3.0 |
1.0 |
Yes |
1.0 |
toGMTString() |
4.0 |
1.0 |
Yes |
1.0 |
[edit] RegExp object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
RegExp (pattern, flags) |
? |
? |
? |
? |
| Called as constructor |
new RegExp (pattern, flags) |
4.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
4.0 |
1.0 |
Yes |
1.0 |
exec(string) |
4.0 |
1.0 |
Yes |
1.0 |
test(string) |
4.0 |
1.0 |
Yes |
1.0 |
toString() |
4.0 |
1.0 |
Yes |
1.0 |
| Properties of instances |
source |
4.0 |
1.0 |
Yes |
1.0 |
global |
4.0 |
1.0 |
Yes |
1.0 |
ignoreCase |
5.5 |
1.0 |
Yes |
1.0 |
multiline |
5.5 |
1.0 |
Yes |
1.0 |
lastIndex |
4.0 |
1.0 |
Yes |
1.0 |
[edit] Error object
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
Error (message) |
? |
? |
? |
? |
| Called as constructor |
new Error (message) |
5.0 |
1.0 |
Yes |
1.0 |
| Properties |
prototype |
5.0 |
1.0 |
Yes |
1.0 |
| Properties of prototype |
constructor |
5.0 |
1.0 |
Yes |
1.0 |
name |
5.5 |
1.0 |
Yes |
1.0 |
message |
5.5 |
1.0 |
Yes |
1.0 |
toString() |
5.0 |
1.0 |
Yes |
1.0 |
[edit] NativeError objects
|
Trident |
Gecko |
WebKit |
Presto |
| Called as function |
EvalError (message) |
? |
1.0 |
Yes |
? |
RangeError (message) |
? |
1.0 |
Yes |
? |
ReferenceError (message) |
? |
1.0 |
Yes |
? |
SyntaxError (message) |
? |
1.0 |
Yes |
? |
TypeError (message) |
? |
1.0 |
Yes |
? |
URIError (message) |
? |
1.0 |
Yes |
? |
| Called as constructor |
new EvalError (message) |
? |
1.0 |
Yes |
? |
new RangeError (message) |
? |
1.0 |
Yes |
? |
new ReferenceError (message) |
? |
1.0 |
Yes |
? |
new SyntaxError (message) |
? |
1.0 |
Yes |
? |
new TypeError (message) |
? |
1.0 |
Yes |
? |
new URIError (message) |
? |
1.0 |
Yes |
? |
| Properties |
prototype |
? |
1.0 |
? |
? |
| Properties of prototype |
constructor |
? |
1.0 |
? |
? |
name |
? |
1.0 |
Yes |
? |
message |
? |
1.0 |
Yes |
? |
[edit] References
[edit] External links
- Webdevout — mostly covers Windows browsers. Extensive bug testing.
|
|
|
| Dialects |
|
|
Engines
(comparison) |
|
|
Frameworks,
libraries |
|
|
| People |
|
|
| Other |
|
|