WebTV JavaScript
Guide
August 17, 1999
In order to help developers create scripts
that run on all platforms, the WebTV browser attempts to be compatible with
Netscape's, Microsoft's, and ECMA's versions
of JavaScript. However, full compatibility with all the standards
is impossible due to the small amount of memory in the original
WebTV-based systems. This guide will outline key differences
due both to features of the WebTV browser, and bugs that are
not yet fixed.
Unimplemented Functionality
The WebTV browser does not implement the following
JavaScript functionality:
- Multiple
windows - Since the WebTV browser does not support multiple
windows, scripts cannot open windows and subsequently read
from or write to those windows. An exception is made, however,
for windows larger than 400 by 300 pixels, which are treated
as a new page. The user can get back to the original window
by pressing the "back" button.
The lack of multiple windows has caused problems for authors
who use the window object to refer to frames. For instance,
window.open("ft-top.html","top");
window.open("ft-left.html","left");
would not work on a WebTV browser. Instead, consider using:
parent.frames[0].location = 'ft-top.html';
parent.frames[1].location = 'ft-left.html';
- Regular expressions
- For example:
var re = /a|b|c/i
- Signed scripts - Scripts digitally signed for security are not supported.
- Adding values to built-in objects - For example,
document.myVar.color is not supported; use myVar.color instead.
array.sort method in
JavaScript does not support the optional function parameter
to customize the sort order. If you need to do a numeric sort,
we recommend using a simple "bubble sort" function
like the one below. Please note that this type of sort may
not be efficient for large arrays.
function
bubbleSort(arrayName,arrayLength)
{
for (var i=0; i<(length-1); i++)
for (var j=i+1; j<length; j++)
if (arrayName[j] < arrayName[i])
{
var dummy = arrayName[i];
arrayName[i] = arrayName[j];
arrayName[j] = dummy;
}
}
The WebTV browser implements the following items differently than you may expect:
- Arrays - The WebTV browser limits arrays to 32,768 elements.
- Errors - The WebTV browser does not alert
users when a Web page contains JavaScript errors, although
serious errors will disable JavaScript on a given page.
- Math - The WebTV browser uses 32 bit floats instead of 64-bit doubles. This is adequate for all but high-end
mathematical computations.
Unimplemented Functions and
Event Handlers
WebTV does not implement certain JavaScript
functions, including:
object.prototype(),
document.domain,
form.encoding, history.next, window.onError(), and window.onUnload()
window.opener
- WebTV supports read-only for window.opener rather than read/write.
The following event handlers are not
supported:
onAbort, onError, onUnload,
keyDown, keyUp, keyPress, mouseDown, mouseMove
Bugs
While WebTV Networks is always improving
the WebTV browser, certain bugs will exist at any given time.
Because WebTV Networks does not roll out patches, but rather
whole new versions of the WebTV browser, some bugs may take
months to fix. We hope listing the bugs and workarounds here
will help you in the meantime.
Problem:
Form elements cannot be accessed without specifying the
"document" object before them. This is not a bug
according to the JavaScript specification, because object
properties must be prefaced by all object ancestors. WebTV
Networks is investigating whether to change this behavior in
future browsers.
Example:
if (CustForm.First_Name.value.indexOf("Foo")
!= -1)
Workaround:
Always include the explicit object hierarchy when referring
to objects, e.g.
document.CustForm.First_Name.value.
Problem:
The WebTV browser thinks it's Netscape.
When presented with the conditional if (navigator.appname == "Netscape") , current WebTV clients will return true.
Example:
if (navigator.appname == "Netscape")
alert("Hey, what are you doing here, WebTV?");
Workaround:
When doing a browser sniff, check for WebTV browsers before
checking for Netscape browsers.
Problem:
The onClick event handler does not always work as expected when
placed in a hyperlink. When a user clicks on a hyperlink that
has an onClick , the event will occur, but the link will not
be followed.
Example:
<a href="www.odwalla.com" onClick="alert('You
can't go there.')">Odwalla</a>
Workaround:
In some cases, you can get around the problem by defining statements
in a function, then calling that function from the link. In
other cases, WebTV users may have to click a link twice.
Resources
Here are some Web sites that we find particularly useful when developing JavaScript:
- Devhead - A great all-around site for JavaScript, including news, tutorials, and reviews.
- Webcoder - Notable for its "scriptorium" and JavaScript compatibility charts.
- Irt.org - Probably the most exhaustive list of JavaScript FAQs around.
- Deja.com - When all seems lost, turn to the Deja.com Power Search. Type "*javascript*" into the forum field, and you can search all JavaScript newsgroups for a particular word or phrase.
|