Comparison of layout engines (ECMAScript)

From Wikipedia, the free encyclopedia

The following tables compare ECMAScript (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.

Contents

[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 Used By
Trident Internet Explorer 4 to Internet Explorer 8
Tasman Internet Explorer 5 for Mac
Gecko All Mozilla software, including Firefox; Galeon; Flock; also Epiphany
WebKit Safari; iCab 4; Epiphany;
KHTML Konqueror
Presto Opera; Nintendo DS Browser; Internet Channel
iCab iCab 1-3
Prince XML Prince XML
Amaya Amaya

[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 when valid values are used.
No Indicates that this property is completely ignored.
Partial Indicates that the property is understood, but that not all values are supported. Supported values are implemented correctly.
Incorrect Indicates that the property is understood, but that it is not implemented correctly in all cases.
Experimental Indicates that the property is provided in experimental form under an alternative name, generally with only partial functionality.

[edit] ECMAScript version support

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of ECMAScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
ECMAScript Version Edition 3 Yes Yes 0.6 Yes Yes 7.0 Yes (?)
JavaScript 1.5 extensions No No 0.6 Yes Yes (?) 7.0  ?
JavaScript 1.6 extensions
(excluding E4X)
No No 1.8 Partial  ?  ? No
JavaScript 1.7 extensions No No 1.8.1 No No No No
JavaScript 1.8 extensions No No 1.9 No No No No
JScript .NET extensions No No No No No No No
ActionScript extensions No No No No No No No
E4X No No 1.8 No No No No
Edition 4 (future) No No Planned for 2.0 No No No No

[edit] Standard Library

[edit] Global object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
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 No  ? No  ?
RangeError 5.0  ? Yes No  ? No  ?
ReferenceError 5.0  ? Yes No  ? No  ?
SyntaxError 5.0  ? Yes No  ? No  ?
TypeError 5.0  ? Yes No  ? No  ?
URIError 5.0  ? Yes No  ? 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 Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
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 Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function Function([[p1 [, p2 [, ...]],] body])  ?  ?  ?  ?  ?  ?  ?
Called as constructor new Function([[p1 [, p2 [, ...]],] body]) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties length  ?  ?  ?  ?  ? Yes  ?
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype length  ?  ?  ?  ?  ?  ?  ?
constructor 4.0  ? 1.0 Yes  ? 7.0  ?
toString() 4.0  ? 1.0 Yes  ? 7.0  ?
apply(thisArg, argArray) 4.0  ? 1.0 Yes  ? 7.0  ?
call(thisArg [, arg1 [, arg2 [, ...]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of instances length 4.0  ? 1.0 Yes  ? 7.0  ?
prototype 4.0  ? 1.0 Yes  ? 7.0  ?

[edit] Array object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function Array([item1 [, item2 [, ...]]])  ?  ?  ?  ?  ?  ?  ?
Called as constructor new Array([item1, item2 [, ...]]) 4.0  ? 1.0 Yes  ? 7.0  ?
new Array(len) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype
constructor 4.0  ? 1.0 Yes  ? 7.0  ?
toString() 4.0  ? 1.0 Yes  ? 7.0  ?
toLocaleString() 5.5  ? 1.0 Yes  ? 7.0  ?
concat([item1 [, item2 [,...]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
join(separator) 4.0  ? 1.0 Yes  ? 7.0  ?
pop() 5.5  ? 1.0 Yes  ? 7.0  ?
push([item1 [, item2 [,...]]]) 5.5  ? 1.0 Yes  ? 7.0  ?
reverse() 4.0  ? 1.0 Yes  ? 7.0  ?
shift() 5.5  ? 1.0 Yes  ? 7.0  ?
slice(start, end) 4.0  ? 1.0 Yes  ? 7.0  ?
sort(comparefn) 4.0  ? 1.0 Yes  ? 7.0  ?
splice(start, deleteCount [, item1 [, item2 [, ...]]]) 5.5  ? 1.0 Yes  ? 7.0  ?
unshift([item1 [, item2 [, ...]]]) 5.5  ? 1.0 Yes  ? 7.0  ?
Properties of instances length 4.0  ? 1.0 Yes  ? 7.0  ?

[edit] String object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function String([value])  ?  ?  ?  ?  ?  ?  ?
Called as constructor new String([value]) 3.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
fromCharCode([char0 [, char1 [, ...]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype
constructor 4.0  ? 1.0 Yes  ? 7.0  ?
toString() 3.0  ? 1.0 Yes  ? 7.0  ?
valueOf() 3.0  ? 1.0 Yes  ? 7.0  ?
charAt(pos) 3.0  ? 1.0 Yes  ? 7.0  ?
charCodeAt(pos) 5.5  ? 1.0 Yes  ? 7.0  ?
concat([string1 [, string2 [, ...]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
indexOf(searchString, position) 3.0  ? 1.0 Yes  ? 7.0  ?
lastIndexOf(searchString, position) 3.0  ? 1.0 Yes  ? 7.0  ?
localeCompare(that) 5.5  ? 1.0 Yes  ? 7.0  ?
match(regexp) 4.0  ? 1.0 Yes  ? 7.0  ?
replace(searchValue, replaceValue) 3.0  ? 1.0 Yes  ? 7.0  ?
search(regexp) 4.0  ? 1.0 Yes  ? 7.0  ?
slice(start, end) 4.0  ? 1.0 Yes  ? 7.0  ?
split(separator, limit) 4.0  ? 1.0 Yes  ? 7.0  ?
substring(start, end) 3.0  ? 1.0 Yes  ? 7.0  ?
toLowerCase() 3.0  ? 1.0 Yes  ? 7.0  ?
toLocaleLowerCase(comparefn) 3.0  ? 1.0 No  ? 7.0  ?
toUpperCase() 3.0  ? 1.0 Yes  ? 7.0  ?
toLocaleUpperCase() 3.0  ? 1.0 No  ? 7.0  ?
Additional properties of prototype substr(start, length) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of instances length 3.0  ? 1.0 Yes  ? 7.0  ?

[edit] Boolean object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function Boolean([value])  ?  ?  ?  ?  ?  ?  ?
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 Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function Number([value])  ?  ?  ?  ?  ?  ?  ?
Called as constructor new Number([value]) 3.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
MAX_VALUE 4.0  ? 1.0 Yes  ? 7.0  ?
MIN_VALUE 4.0  ? 1.0 Yes  ? 7.0  ?
NaN 4.0  ? 1.0 Yes  ? 7.0  ?
NEGATIVE_INFINITY 4.0  ? 1.0 Yes  ? 7.0  ?
POSITIVE_INFINITY 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype constructor 4.0  ? 1.0 Yes  ? 7.0  ?
toString([radix]) 4.0  ? 1.0 Yes  ? 7.0  ?
toLocaleString() 5.5  ? 1.0 Yes  ? 7.0  ?
valueOf() 4.0  ? 1.0 Yes  ? 7.0  ?
toFixed(fractionDigits) 5.5  ? 1.0 Yes  ? 7.0  ?
toExponential(fractionDigits) 5.5  ? 1.0 Yes  ? 7.0  ?
toPrecision(precision) 5.5  ? 1.0 Yes  ? 7.0  ?

[edit] Math object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Value properties E 3.0  ? 1.0 Yes  ? 7.0  ?
LN10 3.0  ? 1.0 Yes  ? 7.0  ?
LN2 3.0  ? 1.0 Yes  ? 7.0  ?
LOG2E 3.0  ? 1.0 Yes  ? 7.0  ?
LOG10E 3.0  ? 1.0 Yes  ? 7.0  ?
PI  ?  ? Yes  ?  ? Yes  ?
SQRT1_2 3.0  ? 1.0 Yes  ? 7.0  ?
SQRT2  ?  ? Yes  ?  ? Yes  ?
Function properties abs(x) 3.0  ? 1.0 Yes  ? 7.0  ?
acos(x) 3.0  ? 1.0 Yes  ? 7.0  ?
asin(x) 3.0  ? 1.0 Yes  ? 7.0  ?
atan(x) 3.0  ? 1.0 Yes  ? 7.0  ?
atan2(y, x) 3.0  ? 1.0 Yes  ? 7.0  ?
ceil(x) 3.0  ? 1.0 Yes  ? 7.0  ?
cos(x) 3.0  ? 1.0 Yes  ? 7.0  ?
exp(x) 3.0  ? 1.0 Yes  ? 7.0  ?
floor(x) 3.0  ? 1.0 Yes  ? 7.0  ?
log(x) 3.0  ? 1.0 Yes  ? 7.0  ?
max([value1 [, value2 [, ...]]]) 3.0  ? 1.0 Yes  ? 7.0  ?
min([value1 [, value2 [, ...]]]) 3.0  ? 1.0 Yes  ? 7.0  ?
pow(x, y) 3.0  ? 1.0 Yes  ? 7.0  ?
random() 3.0  ? 1.0 Yes  ? 7.0  ?
round(x) 3.0  ? 1.0 Yes  ? 7.0  ?
sin(x) 3.0  ? 1.0 Yes  ? 7.0  ?
sqrt(x) 3.0  ? 1.0 Yes  ? 7.0  ?
tan(x) 3.0  ? 1.0 Yes  ? 7.0  ?

[edit] Date object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
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  ? 7.0  ?
new Date (value) 4.0  ? 1.0 Yes  ? 7.0  ?
new Date () 4.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
parse(string) 3.0  ? 1.0 Yes  ? 7.0  ?
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 3.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype constructor 4.0  ? 1.0 Yes  ? 7.0  ?
toString() 4.0  ? 1.0 Yes  ? 7.0  ?
toDateString() 4.0  ? 1.0 Yes  ? 7.0  ?
toTimeString() 4.0  ? 1.0 Yes  ? 7.0  ?
toLocaleString() 4.0  ? 1.0 Yes  ? 7.0  ?
toLocaleDateString() 4.0  ? 1.0 Yes  ? 7.0  ?
toLocaleTimeString() 4.0  ? 1.0 Yes  ? 7.0  ?
valueOf() 4.0  ? 1.0 Yes  ? 7.0  ?
getTime() 3.0  ? 1.0 Yes  ? 7.0  ?
getFullYear() 4.0  ? 1.0 Yes  ? 7.0  ?
getMonth() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCMonth() 4.0  ? 1.0 Yes  ? 7.0  ?
getDate() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCDate() 4.0  ? 1.0 Yes  ? 7.0  ?
getDay() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCDay() 4.0  ? 1.0 Yes  ? 7.0  ?
getHours() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCHours() 4.0  ? 1.0 Yes  ? 7.0  ?
getMinutes() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCMinutes() 4.0  ? 1.0 Yes  ? 7.0  ?
getSeconds() 3.0  ? 1.0 Yes  ? 7.0  ?
getUTCSeconds() 4.0  ? 1.0 Yes  ? 7.0  ?
getMilliseconds() 4.0  ? 1.0 Yes  ? 7.0  ?
getUTCMilliseconds() 4.0  ? 1.0 Yes  ? 7.0  ?
getTimezoneOffset() 4.0  ? 1.0 Yes  ? 7.0  ?
setTime(time) 3.0  ? 1.0 Yes  ? 7.0  ?
setMilliseconds(ms) 4.0  ? 1.0 Yes  ? 7.0  ?
setUTCMilliseconds(ms) 4.0  ? 1.0 Yes  ? 7.0  ?
setSeconds(sec [, ms]) 3.0  ? 1.0 Yes  ? 7.0  ?
setUTCSeconds(sec [, ms]) 4.0  ? 1.0 Yes  ? 7.0  ?
setMinutes(min [, sec [, ms]]) 3.0  ? 1.0 Yes  ? 7.0  ?
setUTCMinutes(min [, sec [, ms]]) 4.0  ? 1.0 Yes  ? 7.0  ?
setHours(hour [, min [, sec [, ms]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
setUTCHours(hour [, min [, sec [, ms]]]) 4.0  ? 1.0 Yes  ? 7.0  ?
setDate(date) 4.0  ? 1.0 Yes  ? 7.0  ?
setUTCDate(date) 4.0  ? 1.0 Yes  ? 7.0  ?
setMonth(month [, date]) 3.0  ? 1.0 Yes  ? 7.0  ?
setUTCMonth(month [, date]) 4.0  ? 1.0 Yes  ? 7.0  ?
setFullYear(year [, month [, date]]) 4.0  ? 1.0 Yes  ? 7.0  ?
setUTCFullYear(year [, month [, date]]) 4.0  ? 1.0 Yes  ? 7.0  ?
toUTCString() 4.0  ? 1.0 Yes  ? 7.0  ?
Additional properties of prototype getYear() 3.0  ? 1.0 Yes  ? 7.0  ?
setYear(year) 3.0  ? 1.0 Yes  ? 7.0  ?
toGMTString() 4.0  ? 1.0 Yes  ? 7.0  ?

[edit] RegExp object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function RegExp (pattern, flags)  ?  ?  ?  ?  ?  ?  ?
Called as constructor new RegExp (pattern, flags) 4.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype constructor 4.0  ? 1.0 Yes  ? 7.0  ?
exec(string) 4.0  ? 1.0 Yes  ? 7.0  ?
test(string) 4.0  ? 1.0 Yes  ? 7.0  ?
toString() 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of instances source 4.0  ? 1.0 Yes  ? 7.0  ?
global 4.0  ? 1.0 Yes  ? 7.0  ?
ignoreCase 5.5  ? 1.0 Yes  ? 7.0  ?
multiline 5.5  ? 1.0 Yes  ? 7.0  ?
lastIndex 4.0  ? 1.0 Yes  ? 7.0  ?

[edit] Error object

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function Error (message)  ?  ?  ?  ?  ?  ?  ?
Called as constructor new Error (message) 5.0  ? 1.0 Yes  ? 7.0  ?
Properties
prototype 5.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype constructor 5.0  ? 1.0 Yes  ? 7.0  ?
name 5.5  ? 1.0 Yes  ? 7.0  ?
message 5.5  ? 1.0 Yes  ? 7.0  ?
toString() 5.0  ? 1.0 Yes  ? 7.0  ?

[edit] NativeError objects

Trident Tasman Gecko WebKit KHTML Presto iCab
Name of JavaScript Engine JScript JScript SpiderMonkey JavaScriptCore KJS linear b/futhark InScript
Called as function EvalError (message)  ?  ?  ?  ?  ?  ?  ?
RangeError (message)  ?  ?  ?  ?  ?  ?  ?
ReferenceError (message)  ?  ?  ?  ?  ?  ?  ?
SyntaxError (message)  ?  ?  ?  ?  ?  ?  ?
TypeError (message)  ?  ?  ?  ?  ?  ?  ?
URIError (message)  ?  ?  ?  ?  ?  ?  ?
Called as constructor new EvalError (message)  ?  ?  ?  ?  ?  ?  ?
new RangeError (message)  ?  ?  ?  ?  ?  ?  ?
new ReferenceError (message)  ?  ?  ?  ?  ?  ?  ?
new SyntaxError (message)  ?  ?  ?  ?  ?  ?  ?
new TypeError (message)  ?  ?  ?  ?  ?  ?  ?
new URIError (message)  ?  ?  ?  ?  ?  ?  ?
Properties
prototype  ?  ?  ?  ?  ?  ?  ?
Properties of prototype constructor  ?  ?  ?  ?  ?  ?  ?
name  ?  ?  ?  ?  ?  ?  ?
message  ?  ?  ?  ?  ?  ?  ?

[edit] References

[edit] External links

  • Webdevout — mostly covers Windows browsers. Extensive bug testing.