Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsGeneralPHPASPPerlColdFusionFlashHTML, CSS, ScriptsBrowsers

Webmaster Forum / HTML, CSS, Scripts / JavaScript / November 2005



Tip: Looking for answers? Try searching our database.

prompt not working

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
joemac - 30 Nov 2005 16:42 GMT
I'm just starting out with javascript and the following is not working
as it should.  The expected prompt dialog box never appears.

<head>
<script language="JavaScript"><!--
var name;
name=prompt("Please enter your name.","");
document.write("My name is: ", name);
// --></script>
</head>
<body>
<p>Did it work out ok?
</body>
</html>

I've tried replacing
<script language="JavaScript">
with
<script type="text/javascript">
but this makes no difference in the results, which are as follows:

My name is:

Did it work out ok?

What am I doing wrong?

Joe
Thomas 'PointedEars' Lahn - 30 Nov 2005 17:43 GMT
> 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 - 22 lines]
>
> What am I doing wrong?

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.

  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 `<!-- ... -->'.

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).

  2. Therefore, a ReferenceError occurs and further expressions
     are not evaluated.

D) Script support is not present, i.e. either it is
  disabled or not available in the first place.

<URL:http://jibbering.com/faq/#FAQ4_43>

PointedEars
Thomas 'PointedEars' Lahn - 30 Nov 2005 18:02 GMT
>> 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
joemac - 30 Nov 2005 21:33 GMT
> 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
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.