>> I'm just starting out with javascript and the following is not working
>> as it should. The expected prompt dialog box never appears.
[quoted text clipped - 17 lines]
>>
>> What am I doing wrong?
Re-reviewing this:
> [...]
> A) a) You are declaring an XHTML document type and serve it
[quoted text clipped - 4 lines]
> It also does not work in XHTML 1.0 yet, even though
> W3C DOM Level 2 HTML says it should.
That does not apply here, document.write() does something, which
I overlooked at first.
> B) You successfully commented out script content with the
> empty declaration `<!-- ... -->'.
Since "My name is: " is displayed, this would not apply here either.
However, commenting out script contents like this can have such
harmful effects and since it is not needed either, you should not
do it anyway.
> C) 1. There is no global prompt() method in your UA, meaning
> that either the Global Object is not the same object the
> `window' reference points to or this host environment
> method is not supported by your UA's Application Object
> Model (AOM).
That is still a possibility. Since document.write(..., name) was
used and not document.write(... + name), a DOM implementation may
either decide not to display `undefined' or not to support
additional arguments for that method.
> 2. Therefore, a ReferenceError occurs and further expressions
> are not evaluated.
That does not appear to happen, since my "My name is:" is displayed.
> D) Script support is not present, i.e. either it is
> disabled or not available in the first place.
That's not very likely either, since "My name is:" is created via
client-side script.
It appears that C) is the only possibility that remains.
Sorry for causing confusion :-/
PointedEars
> A) a) You are declaring an XHTML document type and serve it
> correctly as application/xhtml+xml. Not at all wrong,
> but it would explain points Ab) and B) below.
Since there are no explicit declarations about document types in my
code I infer from the above that XHTML must be the "default" document
type. Is that correct?
> b) document.write() does not work in XHTML 1.1 and later.
> It also does not work in XHTML 1.0 yet, even though W3C
> DOM Level 2 HTML says it should.
>
> B) You successfully commented out script content with the
> empty declaration `<!-- ... -->'.
The book that I am using says to use comment tags to enclose all script
elements so as to prevent wrongful interpretation by browsers lacking
the ability to process said javascript elements. Are you saying that
there are some browsers that are capable of processing javascript but
do know enough to overlook comment tags inside of script begin and end
tags?
> C) 1. There is no global prompt() method in your UA, meaning
> that either the Global Object is not the same object the
> `window' reference points to or this host environment
> method is not supported by your UA's Application Object
> Model (AOM).
What is "UA"?
> 2. Therefore, a ReferenceError occurs and further expressions
> are not evaluated.
Is it possible to determine that this (ReferenceError) has occurred,
and why?
> D) Script support is not present, i.e. either it is
> disabled or not available in the first place.
How would I go about determining this and correcting it if necessary?
> <URL:http://jibbering.com/faq/#FAQ4_43>
I examined the referenced article. I do not see any "little yellow
triangle". In fact I see no triangle at all, of any color.
Joe
Thomas 'PointedEars' Lahn - 30 Nov 2005 22:21 GMT
>> A) a) You are declaring an XHTML document type and serve it
>> correctly as application/xhtml+xml. Not at all wrong,
[quoted text clipped - 3 lines]
> code I infer from the above that XHTML must be the "default" document
> type. Is that correct?
No, it is not. The document type must be explicitly declared, you
should declare one of the HTML 4.01 document types. See the Spec.
>> b) document.write() does not work in XHTML 1.1 and later.
>> It also does not work in XHTML 1.0 yet, even though W3C
[quoted text clipped - 6 lines]
> elements so as to prevent wrongful interpretation by browsers lacking
> the ability to process said javascript elements.
Your book (which?) is outdated.
There are no such browsers left that would still conform to Internet
standards. See RFC2854 and, of course, previous discussions on the
subject.
> Are you saying that there are some browsers that are capable of
> processing javascript but do know enough to overlook comment tags
> inside of script begin and end tags?
Probably. The HTML specification does not state it as a MUST or
SHOULD, and examples therein are not normative. In fact, in HTML
the `script' element's content is CDATA that is _not_ really
parsed. (The only parsing that MUST take place is looking for
the CDATA-ending ETAGO delimiter `</'.)
Furthermore, there is no reference material that states script
engines MUST ignore `<!--' at the beginning of script code. And
in XHTML, where an XML parser is used and the `script' element's
content is PCDATA by default, it is allowed to ignore commented
content by removing comments from source before building the
parse tree. (After all, they are only _comments_.)
>> C) 1. There is no global prompt() method in your UA, meaning
>> that either the Global Object is not the same object the
[quoted text clipped - 3 lines]
>
> What is "UA"?
([X]HTML) User Agent. Web browsers are the greatest subset.
>> 2. Therefore, a ReferenceError occurs and further expressions
>> are not evaluated.
>
> Is it possible to determine that this (ReferenceError) has occurred,
Yes, if the error reporting feature of your UA does not suffice,
you could use
try
{
// statements that may cause errors
}
catch (e)
{
alert(e.name + ": " + e.message);
}
provided it is supported (ECMAScript 3 compliant implementation).
Or use proprietary
onerror = function()
{
alert("Error!");
onerror = null;
return true;
}
> and why?
Only line-wise debugging can show this.
>> D) Script support is not present, i.e. either it is
>> disabled or not available in the first place.
>
> How would I go about determining this and correcting it if necessary?
Depends on the user agent.
>> <URL:http://jibbering.com/faq/#FAQ4_43>
>
> I examined the referenced article. I do not see any "little yellow
> triangle". In fact I see no triangle at all, of any color.
Which user agent(s) have you tested with?
PointedEars
Thomas 'PointedEars' Lahn - 30 Nov 2005 22:28 GMT
>>> 2. Therefore, a ReferenceError occurs and further expressions
>>> are not evaluated.
[quoted text clipped - 22 lines]
> return true;
> }
Thinking about it, if prompt() does not work, alert() may not work either,
as both are methods of the Window host object and not built-in language
features.
Maybe you will have to find other ways to indicate error. You could change
the value of a variable, for example. Comparison will at least indicate
that there was an error. I think, _which_ error occured cannot be easily
determined without using AOM/DOM features.
PointedEars