Javascript Frequently Asked Questions

 


JAVASCRIPT BOOKS

Here are some various Javascript books and general reviews.
Javascript Sourcebook by McComb for Wiley---Good
Using Javascript by Reynolds & Wooldridge for Que---Fair
The Javascript Bible by Goodman---Good
Gesing and Schneider, JavaScript for the World Wide Web PeachPit press.
Flanagan. JavaScript, the Definitive Guide O'Reilly Nutshell

HELPFUL JAVASCRIPT

What browser are you using?
This file tells you what browser you are in if you are not sure.
appname=Netscape if you are in Netscape
appname=Microsoft Internet Explorer if you are in IE
Here is a page with more Javascript examples and links.
Here is today'sDate and Time
Download a file with numerous date functions.


TUTORIALS

Here are some links to online tutorials and FAQs that may be useful.

Netscape Javascript Examples
'Voodoo's Introduction to JavaScript'
Nick Heinle's javascript page
Javascript versus Jscript
Martin's tutorial.
Full information upon cookies can be found at the Persistent Cookie FAQ.


Questions & Answers

This is a list of frequently asked questions posted by users on the comp.lang.javascript newsgroup, and answers by myself and other experts from the newsgroup. The answers reflect the feelings and biases of the experts and may be blunt on certain issues.


Q-1. What is the difference between Javascript and Jscript?
A-1. Javascript is a scripting language created by Netscape to allow programmers to rapidly create code giving activity and functionality to webpages, above and beyond what is intrinsically allowed in HTML. Jscript is the common term used to refer to Internet Explorer's version of Javascript. Jscript in IE3 did not support the more interesting features of Javascript, and improperly used many of the common Javascript features. IE4 has more closely followed the features found in Netscape but varies greatly in the implementation of newer features such as DHTML.
Don Benish


Q-2. Can I use Javascript to see who is browsing to my pages?
A-2. No, unless the user has turned off the security features. This is on purpose for very good reasons. You as the user should not be harassed by merchants and spies who home in on the fact that you simply visited a certain site. No one wants their e-mail box filled with unwanted junk mail. If you browse to the more questionable sites, you surely don't want blackmailers making your tastes public. There was a way in Netscape 2.0 to have the browser send silent e-mail to the webmaster. This method was deleted in NN 2.01 and above. If the user has the security alert checkbox set to OFF in NN2.x, or above , then it is possible to send mail without his knowledge, but I always leave mine on. It is possible with CGI(Common Gateway Interface) or SSI(Server Side Includes) to record the domain name of the browser you are using, but I know of no way to record the particulars of your personal identity. Some people continue to insist that there is a way to collect all browser's identities. If you can supply the methods to me, I would very much appreciate knowing how it is done.
Don Benish


Q-3. Can you print out from Javascript?
A-3. Not from NN3+. For security reasons, the browser cannot automatically access windows functions. You cannot make the browser do things like push buttons on the browser(unless they were created by the html or Javascript program), print, access the computer's file structure, start other windows programs, or affect other non-browser functions. NN4+ has the ability to use signed scripts which allows the user to allow certain signatures to do special actions like printing. Browsers which do not have these special signatures set cannot perform these operations. IE4 has the ability to print using access to certain Com objects.
Don Benish


Q-4. Can I access functions in a frame or window from another frame or window?
A-4. Sure. The parent object is the way to access functions in other frames or windows. Check a good book or take a look at Javascript handbook.
Don Benish


Q-5. Is there a way to make the label on a button change when I put a mouse over the button?
A-5. Not on a button, however, you can use an Image as a link and change the Image dynamically. Create multiple Images resembling buttons and use them in reference links. Then use an onmouseover handler to change the Image.
Don Benish


Q-6. How do I make lines of text in alert boxes wrap properly?
A-6. Use \n where you want the line to break.
Don Benish


Q-7. How do I refresh my page?
A-7. Use the location object. Be aware that if you are refreshing the page you are on, any code after the refresh statement will not be executed. Look at the Javascript handbook
Don Benish


Q-8. Can I preload images?
A-8. Sure. Use
Image1 = new Image;
Image1.src="url";
Don Benish


Q-9. Can I use text files that can be written to the page by Javascript?
A-9. Sure. Netscape allows a feature called External files that can be loaded as a package of Javascript functions or objects. The way to use them is
<SCRIPT SRC="filename.JS"> 
default text or html if the load fails
</SCRIPT>
Look at the Javascript handbook for more info.
Don Benish


Q-10. Can JavaScript Communicate With Java?
A-10. Yes. Within JavaScript you can create Java objects, call Java methods, and change parameter values in <EMBED> and <APPLET> tags. Built-in methods can generally be called directly by using the full reference of packagename.classname.methodname. Applets with public methods can be called with a reference to document.applet_name.method. Parameter values can be referenced with document.applet_name.parameter. Netscape has more information on LiveConnect
Daaron Dwyer


Q-11. Can Java Communicate With JavaScript?
A-11. Yes. Several methods exist within netscape.javascript.JSObject. From Java, you can call JavaScript methods, evaluate JavaScript expressions, retrieve JavaScript objects, and set the value of JavaScript objects. Netscape has an extensive discussion of the netscape.javascript.JSObject object
Daaron Dwyer


Q-12. What are cookies and how do I use them?
A-12. The client can store relatively short bits of information in a file, called a cookie for no real reason. Cookies are set from the server via HTTP headers in the format:
Set Cookie: name=value; expires=date; path=directory_path;
domain=your_domain; secure
You set a cookie by assigning a "Set Cookie" string to the document.cookie object.
If an unexpired cookie is found for the domain and path, your browser responds with "Cookie: name=value; name=value ..." You can then assign the document.cookie object to a variable.

***Points to remember about cookies:
-Domain is the locale of the cookie's use and matches against the tail-- a domain of congress.gov matches senate.congress.gov and committee.senate.congress.gov (default is domain generating cookie).
-Path is a further granulation of use locale and compared only after passing domain tests. Path is pattern matched where "/foo" matches "/foobar" and "/foo/bar" (default is current request path).
-Using "secure" at the end will cause the cookie to only be sent in SHTTP or SSL sessions.
-maximum of 300 cookies, 4KB per cookie for entire name=value string, 20 cookies per specific domain
-multiple Set Cookie headers can be sent in a server reply
-cookies with the exact name and path overwrite the existing cookie entry. "/foo" will not overwrite "/foo/bar." You can delete cookies by sending the name and path with a past expires date.
-expires attribute indicates the "safe" purging date, but deletion is not required
Daaron Dwyer



Q-13.How can I use quote marks inside a string?
A-13. In two ways. Quotes can be escaped like this:
alert("The girl yelled \"Over there!\" The bear seemed to come out of no where.")
or you can use single quotes instead.
alert('The girl yelled "Over there!" The bear seemed to come out of no where.')

Don Benish


Q-14.I've seen a kind of JS-Alert asking for a stringinput like the username. Does anybody know how I can program this?

A-14. ret = prompt("message","default_text");
Don Benish



Q-15.When I use
anArray[1] = document.form1.InputFieldName;
Later, when I try to use anArray[1].name or [1].value, it's undefined

A-15. You have to first create the array using a constructor
var anArray = new Array();
Don Benish



Q-16.How can I get JS to write my IP address?
1) Can it be written to a text box in say a Form?
2) Can it be written to a page? (reg html)

A-16. Use
var a= location.hostname
You can use it anywhere you can use a string
Don Benish



Q-17.I get the following error message when I try to write to my form fields
Window.document.form.select1 has no property named 'selectedIndex'
A-17. Your problem may be that when you have more than one form you have to refer to it by name or by index.
a=document.form1.select1.selectedIndex
a=document.form[0].select1.selectedIndex
Always name your forms and refer to them by name if possible.
Don Benish


Q-18.I am working with realaudio, and I was wondering if there was any way to detect if the user supports realaudio? I want to include sound effects as "onMouseOver" events, but it will really mess up users who don't have /want the realaudio support.
A-18. Per "Using Javascript"
"This is accomplished by very briefly opening a sub window and attempting to open a file of the given mime type in that window. If the plugin exists then the script returns true. This code only checks to see if your browser has any plugin that reads that mime type, not a specific plugin."
You can use the following code:
function probeplugin(mimetype){
var haveplugin=false;
var tiny = window.open(" ","teensy","width=1,height=1")
if(tiny !=null){
if(tiny.document.open(mimetype) != null
haveplugin=true
tiny.close()
}
return haveplugin
}
Don Benish


Q-19.I have a JavaScript function that works with NN, but not with MSIE. I know that it can't be made to work with MSIE, so I had the idea of trying to get it to display in Netscape only.
A-19. Use the navigator object to choose what to display where.
Here is a sample of how to use this.
function choose(){
if(navigator.appName == "Netscape") location = "Cv_start.htm";
else {location = "Ie_start.htm";}
self.location}

Note!! Always give the program an option for the false proposition.
You can also have alternate methods for various versions of browsers as well.
Don Benish



Q-20.I've got a page with a number of links listed on it and I want to be able to determine what links people clicked on.
A-20.Make all your links set a variable like this:
var lindex1=0;
var lindex2=0;
<a href="blahblah" onClick="lindex1=1">
<a href="blahblah" onClick="lindex2=1">
or
var lindex= new Array(0,0,0,0,0,0,0,0);
<a href="blahblah" onClick="lindex[0]=1">
<a href="blahblah" onClick="lindex[1]=1">
Don Benish


Q-21.I am having problems getting one window appear in front of the others.
A-21.Look at the megaConverter.
I used this method
convWindow = open(blah,blah,blah);
convWindow.focus();
this doesn't work right in IE3.
Don Benish


Q-22.From the original (un-named) browser window start a new window with the window.open feature. From that window link to a file which will open in the origional (un-named) window. It seems easy but I don't seem to get it working just as a lot of others.
A-22. Look at the megaConverter.
The way I beat it was to create the first page with frames, one full sized and the other hidden. This allowed me to name that frame. Everything is then referenced back to that frame.
Don Benish
Another way to do it is is to use the window.name property.
window.name="mainframe"; //allows you to name any window that was not previously named in html or javascript.
thanks to lomaxx@geocities.com


Q-23.Is there a command to split a string?
A-23.Use substring and indexOf methods.
firsthalf = whole.substring(0, whole.indexOf(':'));
secondhalf = whole.substring( whole.indexOf(':')+1,whole.length);
Don Benish


Q-24.Is there a way to change the text of a select box?
A-24. In the Javascript Sourcebook" Gordon gives this method:
formname.selectname.option[index].text = "Text";
history.go(0);
You could change all the entries this way. The important feature is that you then reload the page to get it to display the new values.
Don Benish


Q-25.I'm looking for a way so that when the mouse cursor is brought over an image, a sound will play (perferably without opening another window).
A-25.Yes, it can be done in Navigator 3.0 or greater by using LiveConnect to manipulate LiveAudio plug-in settings. Check out:
http://webreference.com/javascript/960916/part02.html
(And for more excellent ideas, also check out:
http://webreference.com/javascript/tip_week_past.html
You don't need to open other windows, or even use frames. (Just make sure you have both Java and JavaScript enabled.) A brief example:
<embed src = "mysound.wav" name="mysound" hidden=true autostart=false mastersound>
<a href="#" onMouseOver="document.mysound.play(true)" onMouseOut="document.mysound.stop()">
<img src="myimage.jpg">

Alternatively, you could remove the name attribute and refer to the embedded object like this:
document.embeds[0].play(true)
and
document.embeds[0].stop()
John McNeirney



Q-26.What I want to do is have a person press a button in frame 1, which causes a javascript function in frame 2 to redraw the screen. That seems pretty simple just reload the page, but what if you want to pass some parameter to the function in frame 2 which causes it to redraw differently?
A-26.Send your new variables as arguments to your location command. You can then use location.search to recover these arguments. Look at Mconv020  or jstest
to see how this is done.  The second link also demonstrates how to use .js files.
Don Benish


Q-27.When I have a child window opened I can look at it with my parent windpw to get a value. If the child window is not open, how do I make the function in the parent window not give an error message when it tries to look for the value.
A-27.In the body tag of the child window use onLoad and onUnload set or reset a vaue in the parent window. <BODY onLoad="opener.statdex=1" onUnload="opener.statdex=0">
Don Benish


Q-28.How do I pick a random image everytime anybody tries to load my page.
A-28.Dynamically write an image tag, inserting the randomly generted URL of the image. You can do this with the background also by writing the whole body tag.
Don Benish


Q-29.I have a function that determines a value and then writes a string depending on the value. When I place the function outside of a table it works fine, but when it is inside the table it doesn't work.
A-29.This is a known problem with javascript. The way to get around it is to dynamically write the whole html including the table.
Don Benish


Send comments or suggestions to:
Don Benish

Copyright © 1997 Don Benish
Last Updated: 
1