Comparison of layout engines (ECMAScript)

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search

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.

Contents

Explanation of the tables

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 and other Internet Explorer shells (Microsoft Windows operating systems only)
Tasman Mac OS X versions of Internet Explorer and MSN
Gecko All Mozilla software, including Firefox; SeaMonkey; Galeon; Camino; K-Meleon; Flock; also Epiphany-gecko
WebKit Apple Safari; Google Chrome; Shiira; iCab 4; OmniWeb 5.5+; Epiphany; Adobe AIR; Midori; Adobe Dreamweaver CS4
KHTML Konqueror
Presto Opera; Opera Mobile, Nintendo DS Browser; Internet Channel; future Adobe Systems products
iCab iCab 1-3
Prince XML Prince

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.

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 No
JavaScript 1.7 extensions No No 1.8.1 Yes 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

Standard Library

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  ?

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  ?

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  ?  ? 1.0  ?  ? Yes  ?
prototype 4.0  ? 1.0 Yes  ? 7.0  ?
Properties of prototype length  ?  ? 1.0  ?  ?  ?  ?
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  ?

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  ?
indexOf(searchElement[, fromIndex])  ?  ? 1.8  ?  ?  ?  ?
lastIndexOf(searchElement[, fromIndex])  ?  ? 1.8  ?  ?  ?  ?
filter(callback[, thisObject])  ?  ? 1.8  ?  ?  ?  ?
forEach(callback[, thisObject])  ?  ? 1.8  ?  ?  ?  ?
every(callback[, thisObject])  ?  ? 1.8  ?  ?  ?  ?
map(callback[, thisObject])  ?  ? 1.8  ?  ?  ?  ?
some(callback[, thisObject])  ?  ? 1.8  ?  ?  ?  ?
reduce(callback[, initialValue])  ?  ? 1.9  ?  ?  ?  ?
reduceRight(callback[, initialValue])  ?  ? 1.9  ?  ?  ?  ?
Properties of instances length 4.0  ? 1.0 Yes  ? 7.0  ?

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  ?

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  ?

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  ?

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 Yes  ? Yes  ?
SQRT1_2 3.0  ? 1.0 Yes  ? 7.0  ?
SQRT2 Yes  ? Yes 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  ?

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  ?

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  ?

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  ?

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)  ?  ? 1.0  ?  ?  ?  ?
RangeError (message)  ?  ? 1.0  ?  ?  ?  ?
ReferenceError (message)  ?  ? 1.0  ?  ?  ?  ?
SyntaxError (message)  ?  ? 1.0  ?  ?  ?  ?
TypeError (message)  ?  ? 1.0  ?  ?  ?  ?
URIError (message)  ?  ? 1.0  ?  ?  ?  ?
Called as constructor new EvalError (message)  ?  ? 1.0  ?  ?  ?  ?
new RangeError (message)  ?  ? 1.0  ?  ?  ?  ?
new ReferenceError (message)  ?  ? 1.0  ?  ?  ?  ?
new SyntaxError (message)  ?  ? 1.0  ?  ?  ?  ?
new TypeError (message)  ?  ? 1.0  ?  ?  ?  ?
new URIError (message)  ?  ? 1.0  ?  ?  ?  ?
Properties
prototype  ?  ? 1.0  ?  ?  ?  ?
Properties of prototype constructor  ?  ? 1.0  ?  ?  ?  ?
name  ?  ? 1.0  ?  ?  ?  ?
message  ?  ? 1.0  ?  ?  ?  ?

References

External links

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

Served in 0.798 secs.