A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on IRC (such as one of these permanent autoconfirmed members).

Difference between revisions of "Web ECMAScript"

From WHATWG Wiki
Jump to: navigation, search
Line 101: Line 101:
  
 
TODO:This is a mess
 
TODO:This is a mess
 +
 +
== HTML comments ==
 +
 +
<!-- is a line comment (same as //)
 +
 +
--> is ...? TODO
  
 
== Stuff that needs a home ==
 
== Stuff that needs a home ==
  
 
Enumeration of objects is in insertion order (but host property order compared to user defined property order does not seem to be significant)
 
Enumeration of objects is in insertion order (but host property order compared to user defined property order does not seem to be significant)

Revision as of 15:22, 25 April 2009

Web ECMAScript

This page is for documenting the differences between the ES5 draft and the requirements for ECMAScript implementations in web browsers.

Identifiers

(this is very rough)

Identifiers containing escape sequences are not equivalent to fully unescaped identifiers in the case that, after fully unescaping identifier, it is a ReservedWord. In particular it is possible to create Identifiers that unescape to a reserved word so long as at least one character is fully escaped. Subsequent use of such identifiers must also have at least one character escaped (otherwise the reserved word will be used instead) but it need not be the same character(s) as that originally used to create the identifier.

15.5.4 Properties of the String Prototype Object

Several extra methods are found on String.prototype for wrapping text in HTML elements (these are all generic; the this value need not be a String object):

Algorithm ToHTMLTag(tag_name, content, attribute_name, attribute_value):

  1. if attribute_name is undefined return "<" + tag_name + ">" + content + "</" + tag_name + ">"
  2. otherwise return "<" + tag_name + " " + attribute_name + "=\"" + attribute_value + "\">" + content + "</" + tag_name + ">"

String.prototype.anchor(name)

  1. Let content be ToString(this)
  2. Let n be ToString(name)
  3. Return ToHTMLTag("a", content, "name", n)

String.prototype.big()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("big", content)

String.prototype.blink()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("blink", content)

String.prototype.bold()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("b", content)

String.prototype.fixed()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("tt", content)

String.prototype.fontcolor(color)

  1. Let content be ToString(this)
  2. Let attribute_value be ToString(color)
  3. Return ToHTMLTag("font", content, "color", attribute_value)

String.prototype.fontsize(size)

  1. Let content be ToString(this)
  2. Let attribute_value be ToString(size)
  3. Return ToHTMLTag("font", content, "size", attribute_value)

String.prototype.italics()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("i", content)

String.prototype.link(href)

  1. Let content be ToString(this)
  2. Let attribute_value be ToString(href)
  3. Return ToHTMLTag("a", content, "href", attribute_value)

String.prototype.small()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("small", content)

String.prototype.strike()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("strike", content)

String.prototype.sub()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("sub", content)

String.prototype.sup()

  1. Let content be ToString(this)
  2. Return ToHTMLTag("sup", content)

Global scope

ES3.1 claims the global scope "this" is the same as the global object, which is not always true in HTML5.

Eval

Use of eval not called "eval". Shoud work but implementations differ on the scope (Spidermonkey first tries global and then local if the object as not found globally, JScript uses local scope, others use global scope), may not have strong compat requirements

eval.apply(this, code) should work but scope again varies when "this" is not the global object

eval.apply({}, code) should throw EvalError

Date Parsing

TODO:This is a mess

HTML comments

<!-- is a line comment (same as //)

--> is ...? TODO

Stuff that needs a home

Enumeration of objects is in insertion order (but host property order compared to user defined property order does not seem to be significant)