comp.lang.javascript FAQ - META 2009-03-04
- From: "FAQ server" <javascript@xxxxxxxxxxxxxx>
- Date: Wed, 04 Mar 2009 09:00:02 +0000
comp.lang.javascript FAQ - Quick Answers- 11, Updated January 26, 2009
1 Meta-FAQ meta-questions
1.1 _Which newsgroups deal with javascript_?
The official Big 8 Usenet newsgroup dealing with javascript is
news:comp.lang.javascript.
Some "language" hierarchies also have *.comp.lang.javascript groups.
c.l.js is an unmoderated newsgroup.
1.2 _What questions are on-topic for comp.lang.javascript_?
The comp.lang.javascript newsgroup deals with ECMAScript
languages, so any questions about JavaScript or JScript are
welcome. However, the majority of questions sent to this group
relates to javascript in a web browser. If you are experiencing
issues with a particular browser, or the host is not a browser
at all, please make this information clear.
Javascript and Java are two completely different languages.
Java questions should be asked in one of the comp.lang.java.*
newsgroups; they are not appropriate for c.l.js (as Java and
javascript are distinct programming languages with only
superficial similarities due to sharing a C-like syntax and
some of the characters in their names).
Questions dealing with other scripting languages, such as
VBScript, PerlScript or CGI scripting are also off-topic,
as are HTML-only or CSS-only questions.
Questions that are specific to Microsoft's JScript may also
be appropriately asked at:
news:microsoft.public.scripting.jscript
The comp.lang.javascript newsgroup charter is included in
<URL: http://www.jibbering.com/faq/faq_notes/cljs_charter.html >
1.3 _What should I do before posting to comp.lang.javascript_?
Before posting to c.l.js, you should read this document.
You should also check the Resources section <URL: http://jibbering.com/faq/index.html#onlineResources >.
*How to Ask a Question*
* Read recent relevant posts in c.l.js.
* State your question clearly and concisely.
* Use the Subject: line to show the type of problem you have but
include the question in the body as well.
* For a more detailed explanation of formatting, see
"Posting Questions and Replies to comp.lang.javascript" <URL: http://www.jibbering.com/faq/faq_notes/clj_posts.html >.
*Replying*
* Quote only relevant parts of earlier messages, and add your
comments below each quoted section
(FYI28/RFC1855 <URL: http://www.ietf.org/rfc/rfc1855.txt >).
* Link to specific sections of the FAQ that are relevant.
* Avoid being unnecessarily rude, but do not complain about other rude posts.
* Don't quote signatures.
*Posting Code*
* Try to reduce the problem as much as possible.
* Validate the HTML and CSS <URL: http://validator.w3.org/ >.
* Make sure the code is executable as transmitted.
* Format lines to 72 characters; indent with 2-4 spaces (not tabs).
* If the code is more than about 300 lines, provide a link instead.
* Mention which platforms and browsers are used or are giving
problems.
* See also the FAQ section on debugging <URL: http://jibbering.com/faq/index.html#debugging >.
* Post in plain-text only. Do not encode it. Do not attach files.
* Do not multi-post; cross-post if necessary
(Wikipedia description <URL: http://en.wikipedia.org/wiki/Cross-post >).
*What Not to Post*
* Do not post job postings. Job postings should go to
an appropriate regional jobs group.
* Do not post copyright material without permission
from the copyright holder.
Relevant announcements are welcome, but no more often than once
per major release, as a short link to the product's webpage.
1.4 _Why was my post not answered_?
This could be for several reasons:
It was a variation of a frequently asked question and was
therefore ignored by everyone.
Nobody knows the answer.
The person with the answer has not seen the post.
It might not be possible to do what you want to do but perhaps
readers of c.l.js are reluctant to answer your post in the negative
when they are not convinced that it cannot be done.
The question was not asked clearly enough, or did not included
enough information to be answered.
The questioner did not realise the need to read the group, for a
few days, to see the answers posted there.
You ignored the
If it is not one of these, then after a few days consider
reposting after checking <URL: http://groups.google.com/group/comp.lang.javascript/topics >
for replies. Make sure the post is phrased well, and everything
needed to answer is correct, and the subject is appropriate.
You are reading the _comp.lang.javascript_ meta-FAQ,
version 11. It is available on the web at
<URL: http://www.jibbering.com/faq/index.html > in HTML form.
This FAQ provides URLs to further information about ECMAScript
(loosely called javascript), and some hints and tips to make your
stay in comp.lang.javascript more enjoyable.
This document was created for three reasons: to help reduce the
high levels of noise on c.l.js, to provide a resource for people
new to javascript, and to point to locations that contain
valuable javascript resources.
Each day, one section of the FAQ is posted for review and questions,
and as a reminder that the FAQ is available.
For additional explanation and detail relating to some aspects
of the FAQ, please see the
FAQ Notes <URL: http://www.jibbering.com/faq/faq_notes/faq_notes.html >.
It has been provided separately to avoid increasing the size of
the FAQ to a point where it would be unreasonable to post it to
the group.
2 Language Overview
2.1 _What is ECMAScript_?
ECMAScript is the international standard that current language
implementations (JavaScript, JScript etc.) are based on. JScript
and JavaScript™ are implementations of ECMAScript.
<URL: http://www.ecma-international.org/publications/standards/Ecma-262.htm >
ECMA-327 defines the Compact Profile of ECMAScript by
describing the features from ECMA 262 that may be omitted in some
resource-constrained environments.
<URL: http://www.ecma-international.org/publications/standards/Ecma-327.htm >
The current edition is ECMA-262, 3rd Edition. There is some
support for this edition in JScript 5.0 and JavaScript 1.3.
JScript 5.5 and JavaScript™ 1.5, in Netscape 6.1 and later,
are somewhat compliant.
ECMAScript does not define any host objects, such as the DOM
document, the browser window object, or ActiveXObject.
2.2 _What is JScript_?
JScript is Microsoft's implementation of ECMAScript.
Questions that are specific to Microsoft's JScript may also
be appropriately asked at:
news:microsoft.public.scripting.jscript
2.3 _What are object models_?
Object models (OMs) are not part of the ECMAScript language: they
are provided by the host to allow javascript (or other scripting
language) to communicate with the host. An object model may allow
javascript to access a file system, or control a nuclear power
station. The most commonly used object models via javascript are
provided by Active Server Pages, Server Side javascript, and the
Windows Script Host. The most common of all is the
Document Object Model (DOM) provided by web browsers. Other
document types such as SVG also define scriptable DOMs, mostly as
extensions of the W3C Core DOM specification designed for use
with XML documents.
2.4 _What is the document object model_?
This is the collection of objects provided by each browser.
Basically, any object in the window hierarchy is part of the
DOM. This means that document.writeln(),
for example, is not an
ECMAScript method but is, in fact, a method provided by the DOM.
An official DOM has been standardised by the World Wide Web Consortium
(W3C); however, like all W3C standards, browser support is not
yet complete. Most cross-browser coding problems come from
slightly different implementations of the DOM in the different browsers.
<URL: http://jibbering.com/faq/index.html#onlineResources >
<URL: http://www.w3.org/DOM/faq.html >
<URL: http://www.w3.org/DOM/ >
2.5 _Internationalisation and Multinationalisation in javascript.
Internationalisation means using one form which is everywhere both
acceptable and understood. Any international standard not supported by
default can be coded for.
For example, there is an International Standard for numeric Gregorian
date format; but none for decimal and thousands separators.
Multinationalisation means using different forms for different
readers. It cannot work well in general, because it requires a
knowledge of all preferences and the ability to choose the right
one, in an environment where many systems are inappropriately
set anyway.
Javascript has a few Multinationalisation features. The various
toString()methods are all implementation dependent,
but tend to use either UK or US settings (not necessarily correctly).
ECMAScript Ed. 3 introduced some capabilities, including the
toLocaleString()method which should create a string
based on the host's locale.
Much more support is expected in future versions of ECMAScript.
2.6 _What does the future hold for ECMAScript_?
The ECMAScript Technical Committee is now working a new
edition. More information can be found at:
<URL: http://www.ecmascript.org/ >.
3 Javascript Resources
3.1 _What books are recommended for javascript_?
Although many books have been reviewed, most are quite bad and
cannot be recommended.
The following list of books been approved by some c.l.js regulars
and has been reviewed and discussed on the list.
_"JavaScript: The Definitive Guide,"_ 5th Edition, By David Flanagan.
ISBN: 0-596-10199-6
<URL: http://oreilly.com/catalog/9780596101992/toc.html >
<URL: http://www.oreilly.com/catalog/jscript5/errata/ >
_"JavaScript Pocket Reference,"_, By David Flanagan.
ISBN-10: 1565925211, ISBN-13: 978-1565925212
<URL: http://oreilly.com/catalog/9780596004118/toc.html >
<URL: http://oreilly.com/catalog/9780596004118/errata/ >
3.2 _What online resources are available_?
*ECMAScript*
* The Official ECMAScript Specification
<URL: http://www.ecma-international.org/publications/standards/Ecma-262.htm >
* ISO/IEC 16262: ISO Standard of ECMA-262 r3 with Corrections
<URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/c033835_ISO_IEC_16262_2002(E).zip >
* ECMAScript on Wikipedia
<URL: http://en.wikipedia.org/wiki/ECMAScript >
*W3C DOM*
* DOM Level 1 ECMAScript Binding
<URL: http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html >
* DOM Level 2 ECMAScript Binding
<URL: http://www.w3.org/TR/DOM-Level-2-HTML/ecma-script-binding.html >
* DOM Level 2 Events
<URL: http://www.w3.org/TR/DOM-Level-2-Events/events.html >
* DOM Level 2 Style
<URL: http://www.w3.org/TR/DOM-Level-2-Style/ >
* DOM Level 3 ECMAScript Binding
<URL: http://www.w3.org/TR/DOM-Level-3-Core/ecma-script-binding.html >
*Browser Documentation*
* Mozilla JavaScript 1.5 reference
<URL: http://developer.mozilla.org/en/docs/JavaScript >
* Online Gecko DOM Reference
<URL: http://developer.mozilla.org/en/docs/Gecko_DOM_Reference >
* Microsoft (D)HTML Reference
<URL: http://msdn2.microsoft.com/en-us/library/ms533050.aspx >
* JScript Reference and Main Microsoft Script Site
<URL: http://msdn2.microsoft.com/en-us/library/hbxc2t98.aspx >
<URL: http://msdn2.microsoft.com/en-us/library/ms950396.aspx >
* Opera Documentation
<URL: http://www.opera.com/docs/specs/#ecmascript >
<URL: http://www.opera.com/docs/specs/js/ >
<URL: http://www.opera.com/docs/specs/js/ecma >
* ICab's Inscript documentation
<URL: http://www.muchsoft.com/inscript/ >
* Safari JavaScriptCore documentation
(nothing)
* Netscape 4 JavaScript (reproduced by Sun Microsystems, Inc.)
<URL: http://docs.sun.com/source/816-6408-10/ >
* Index of Archived Netscape 4 JavaScript docs online and for download
<URL: http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/reference/ >
* Archived documentation for MSIE 3.x
<URL: http://members.tripod.com/%7Ehousten/download/ >
*Javascript Library Groups (Google Groups)*
No javascript libraries are endorsed by this group.
If you are looking for help using a library, visit that library's
discussion group instead.
* jQuery [English]
<URL: http://groups.google.com/group/jquery-en >
* Prototype & Scriptaculous
<URL: http://groups.google.com/group/prototype-scriptaculous >
*Non-Browser javascript Implementations*
* Developing Dashboard Widgets
<URL: http://developer.apple.com/macosx/dashboard.html >
* Win32 Scripting, Using Scripting to Automate Windows
<URL: http://cwashington.netreach.net/ >
* Whitebeam Apache Module - Server Side JavaScript in Apache;
<URL: http://www.whitebeam.org/ >
* Digital Mars DMD Script, console and MS Active Script implementation of ECMAScript,
claimed to be faster than other implementations:
<URL: http://www.digitalmars.com/dscript/ >
* FESI - a free implementation of ECMAScript in Java
<URL: http://www.lugrin.ch/fesi/index.html >
4 Dates
4.1 _How do I format a date with javascript_?
5 Numbers
5.1 _How do I format a Number as a String with exactly 2 decimal places_?
When formatting money for example, to format 6.57634 to
6.58, 6.5 to 6.50, and 6 to 6.00?
Rounding of x.xx5 is uncertain, as such numbers are not
represented exactly. See also:
Why does simple decimal arithmetic give strange results? <URL: #binaryNumbers >n = Math.round( n * 100)/100 converts n to a Number value
close to a multiple of 0.01. However, there are some problems.
Converting the number to a string (n + ""), does not give
trailing zeroes. Rounding numbers that are very close to x.5, for example,
Math.round(.49999999999999992) results 1.
ECMAScript Ed. 3.0 introduced Number.prototype.toFixed.
There are bugs in JScript's implementation with certain numbers,
for example 0.07.
Function numberToFixed returns accurate results that are
consistent across implementations where n > 0.
var numberToFixed;
(function() {
numberToFixed = toFixedString;
function toFixedString(n, digits) {
var unsigned = toUnsignedString(Math.abs(n), digits);
return (n &< 0 ? "-" : "") + unsigned;
}
function toUnsignedString(n, digits) {
var t, s = Math.round(n * Math.pow(10, digits)) + "",
start, end;
if (/\D/.test(s)) {
return "" + n;
}
s = padString(s, 1 + digits, "0");
start = s.substring(0, t = (s.length - digits));
end = s.substring(t);
if(end) {
end = "." + end;
}
return start + end; // avoid "0."
}
// Test results
var d = document;
d.writeln(" numberToFixed(9e-3, 12) => " + numberToFixed(9e-3, 12));
d.writeln(" numberToFixed(1.255, 2) => " + numberToFixed(1.255, 2));
d.writeln(" numberToFixed(1.355, 2) => " + numberToFixed(1.355, 2));
d.writeln(" numberToFixed(.1255, 3) => " + numberToFixed(.1255, 3));
d.writeln(" numberToFixed(.07, 2) => " + numberToFixed(.07, 2));
d.writeln(" numberToFixed(0.0000000006, 0) => " + numberToFixed(0.0000000006, 1));
d.writeln(" numberToFixed(0.0000000006, 0) => " + numberToFixed(0.0000000006, 0));
})();
Function padString can be found in the answer to:
How do I format a date with javascript? <URL: http://jibbering.com/faq/#formatDate >
<URL: http://www.merlyn.demon.co.uk/js-round.htm >
<URL: http://msdn2.microsoft.com/en-us/library/sstyff0z.aspx >
5.2 _Why does simple decimal arithmetic give strange results_?
For example, 5 * 1.015 does not give exactly
5.075 and 0.06+0.01 does
not give exactly 0.07 in javascript.
ECMAScript numbers are represented in binary as IEEE-754 (IEC 559)
Doubles, with a resolution of 53 bits, giving an accuracy of
15-16 decimal digits; integers up to just over 9e15 are
precise, but few decimal fractions are. Given this, arithmetic
is as exact as possible, but no more. Operations on integers
are exact if the true result and all intermediates are integers
within that range.
In particular, non-integer results should not normally be
compared for equality; and non-integer computed results
commonly need rounding; see How do I format a Number as a String with exactly 2 decimal places? <URL: #formatNumber >
<URL: http://msdn2.microsoft.com/en-us/library/7wkd9z69.aspx >
<URL: http://www.merlyn.demon.co.uk/js-misc0.htm#DW4 >
Otherwise, use Math.round on the results of expressions which
should be of integer value.
5.3 _Why does K = parseInt('09') set K to 0_?
Method parseInt generally needs a
second parameter, radix, for the base (value between 2 and 36).
If radix is omitted, the base is determined by the contents of
the string. Any string beginning with '0x' or '0X' represents a
hexadecimal number. A string beginning with a leading 0 may be
parsed as octal (octal digits are 0-7). The string '09'
is converted to 0.
To force use of a particular base, use the radix
parameter: parseInt("09", base).
<URL: http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/parseInt >
<URL: http://msdn2.microsoft.com/en-us/library/x53yedee.aspx >
<URL: http://docs.sun.com/source/816-6408-10/toplev.htm#1064173 >
<URL: http://www.jibbering.com/faq/faq_notes/faq_notes.html#FAQN4_12 >
5.4 _Why does 1+1 equal 11_? or How do I convert a string to a number?
Variables are not typed; their values are. The conversion between a
string and a number happens automatically. Since plus (+) is
also used as in string concatenation, '1' + 1 is equal to '11'.
The string determines what + does. To overcome this, first convert the
string to a number. For example: +varname or Number(varname) or
parseInt(varname, 10) or parseFloat(varname).
Form control values are strings, as is the result from a prompt
dialog. Convert these to numbers before performing addition by using
the unary + operator: +'1' + 1 result is 2.
Additional Notes:
<URL: http://www.jibbering.com/faq/faq_notes/type_convert.html >
<URL: http://msdn2.microsoft.com/en-us/library/67defydd.aspx >
5.5 _How do I generate a random integer from 1 to N_?
Math.random() returns a value R such that 0 <= R < 1.0; therefore:
// positive integer expected
function getRandomNumber(j) {
return Math.floor(j * Math.random());
}
- gives an evenly distributed random integer in the range from
0 to j - 1 inclusive; use getRandomNumber(n)+1 for 1 to n.
<URL: http://msdn2.microsoft.com/en-us/library/41336409.aspx >
<URL: http://docs.sun.com/source/816-6408-10/math.htm >
How to Deal and Shuffle, see in:
<URL: http://www.merlyn.demon.co.uk/js-randm.htm >
6 Objects
6.1 _When should I use eval_?
The eval() function should _only_ be used when it is necessary to
evaluate a string supplied or composed at run-time; the string
can be anything from a simple (but unpredictable) expression such
as "12 * 2.54" to a substantial piece of javascript code.
<URL: http://www.jibbering.com/faq/index.html#propertyAccessAgain >
<URL: http://www.jibbering.com/faq/faq_notes/square_brackets.html >
6.2 _How do I access a property of an object using a string_?
There are two ways to access properties: the dot notation and
the square bracket notation. What you are looking for is the square
bracket notation in which the dot, and the identifier to its right,
are replaced with a set of square brackets containing a string. The
value of the string matches the identifier. For example:-
//dot notation
var bodyElement = document.body;
//square bracket notation, using an expression
var bodyElement = document["bo"+"dy"];
<URL: http://www.jibbering.com/faq/faq_notes/square_brackets.html >
7 Strings and RegExp
7.1 _How do I trim whitespace_?
A regular expression can be used:
function trimString(s) {
return s.replace(/^\s+|\s+$/g,'');
}
Implementations are inconsistent with \s. For example,
some implementations do not match \xA0 (no-break space),
among others.
A more consistent approach would be to create a character class
that defines the characters to trim.
<URL: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp >
<URL: http://docs.sun.com/source/816-6408-10/regexp.htm >
<URL: http://msdn2.microsoft.com/en-us/library/6wzad2b2.aspx >
<URL: http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/c7010139217600c3/31092c5eb99625d0?#31092c5eb99625d0 >
<URL: http://unicode.org/Public/UNIDATA/PropList.txt >
8 DOM and Forms
8.1 _How do I get the value of a form control_?
In HTML documents, named forms may be referred to as named
properties of the document.forms collection, and named form
controls may be referred to as named properties of the form's
elements collection:
var frm = document.forms["formname"];
var contrl = frm.elements["elementname"];
The (string) value property of such controls can be read
directly from the element:-
var value = contrl.value;
value = +contrl.value; //string to number.
Some exceptions would be:
First Exception: Where the control is a SELECT element, and
support for older browsers, such as NN4, is required:
var value = contrl.options[contrl.selectedIndex].value;
Second Exception: Where several controls share the same name,
such as radio buttons. These are made available as collections
and require additional handling. For more information, see:-
<URL: http://www.jibbering.com/faq/faq_notes/form_access.html >
Third Exception: File inputs. Most current browsers do not allow
reading of type="file" input elements in a way that is useful.
8.2 _My element is named myselect[], how do I access it_?
Form controls with any "illegal" characters can be accessed with
formref.elements["myselect[]"] - The bracket characters,
amongst others, are illegal in ID attributes and javascript
identifiers, so you should try to avoid them as browsers may
handle them incorrectly.
<URL: http://msdn2.microsoft.com/en-us/library/ms537449.aspx >
<URL: http://docs.sun.com/source/816-6408-10/form.htm >
<URL: http://www.jibbering.com/faq/faq_notes/faq_notes.html#FAQN4_25 >
8.3 _Why doesn't the global variable "divId" always refer to the element with id="divId"_?
Microsoft introduced a shortcut that can be used to reference
elements which include an id attribute where the
id becomes a globally-accessible property. Some browsers reproduce
this behavior. Some, most notably Gecko-based browsers (Netscape and Mozilla),
do so only in "quirks" mode. The best approach is the document.getElementById
method, which is part of the W3C DOM standard and implemented
in modern browsers (including IE from version 5.0). So an
element with id="foo" can be referenced
with:-
var el = document.getElementById("foo");
Note: make sure not to use the same id twice in the same document
and do not give an element a name that matches an id
of another in the same document or it will trigger bugs in MSIE <= 7 with
document.getElementsByName and document.getElementById.
<URL: http://developer.mozilla.org/en/docs/Using_Web_Standards_in_your_Web_Pages:Using_the_W3C_DOM#Accessing_Elements_with_the_W3C_DOM >
<URL: http://www.jibbering.com/faq/faq_notes/faq_notes.html#FAQN4_41 >
8.4 _Why are my rollovers so slow_?
Images are cached by the browser depending on the headers sent by
the server. If the server does not send sufficient information
for the browser to decide the image is cacheable, the browser
will check if the image has been updated every time you change the
src of an image (in some user settings). To overcome this you
must send suitable headers.
<URL: http://www.mnot.net/cache_docs/ >
8.5 _How do I disable the right mouse button_?
The oncontextmenu is a proprietary method and is not supported on
all browsers.
<body oncontextmenu="return false">
8.6 _How do I detect Opera/Netscape/IE_?
The navigator object contains strings which
specify the browser and version; however, this is in general not
very genuine. Mozilla (and therefore Netscape 6+) allows this to
be freely set, and Opera and IE allow it to be modified. There
are also at least 25 other javascript capable browsers with
their own strings here.
Generally though, you don't need to identify which browser is
being used. There are alternative techniques, but which one you
choose depends on why you want to redirect browsers. If it's to
offer different CSS stylesheets, then <URL: http://w3development.de/css/hide_css_from_browsers/ >
shows many techniques. For Scripting, _object_ detection
is a better method to use.
<URL: http://www.quirksmode.org/js/support.html >
It is also known as feature detection.
Object/feature detection means checking that the object you wish
to use is supported by the browser before using it. This means
that you don't need to know what browsers support what methods,
and your code will automatically be usable on any browser that
can execute it.
if (document.getElementById &&
document.getElementById('el') &&
document.getElementById('el').style ) {
// We know that this browser supports getElementById and has
// a style object, so we can set a style property.
document.getElementById('el').style.color = "red";
}
Browser bugs can often be detected and overcome in similar ways.
<URL: http://developer.mozilla.org/en/docs/Using_Web_Standards_in_your_Web_Pages:Developing_Cross_Browser/Cross_Platform_Pages >
<URL: http://www.jibbering.com/faq/faq_notes/not_browser_detect.html >
<URL: http://dev.opera.com/articles/view/using-capability-detection/ >
<URL: http://developer.apple.com/internet/webcontent/objectdetection.html >
8.7 _How do I modify the content of the current page_?
Using the non-standard but widely implemented innerHTML property:
<div id="anID">Some Content</div> with script:
document.getElementById("anID").innerHTML =
"Some <em>new</em> Content";
Where "anID" is the (unique on the HTML page)
id attribute value of the element to modify.
If the new content is only text and does not need to replace existing HTML,
it is more efficient to modify the data property of a text node.
document.getElementById("anID").firstChild.data = "Some new Text";
Note: Make sure the element exists on the page (and has been parsed) before trying to
reference it.
<URL: http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-FF21A306 >
<URL: http://msdn.microsoft.com/en-us/library/cc304097(VS.85).aspx >
<URL: http://msdn2.microsoft.com/en-us/library/ms533897.aspx >
<URL: http://developer.mozilla.org/en/Whitespace_in_the_DOM >
<URL: http://developer.mozilla.org/en/docs/DOM:element.innerHTML >
<URL: http://www.jibbering.com/faq/faq_notes/alt_dynwrite.html >
8.8 _I get an error when trying to access an element by getElementById but
I know it is in the document. What is wrong_?
You cannot access elements that appear in the document after you try
to read them with a DOM method like document.getElementById.
You can either:
A) include your script after the HTML element it refers to, or
B) use the "load" event to trigger your script.
Example A:
<div id="snurgle">here</div>
<script type="text/javascript">
(function(){
var snurgle = document.getElementById('snurgle');
})();
</script>
Example B:
<script type="text/javascript">
window.onload = findElement;
function findElement(){
var snurgle = document.getElementById('snurgle');
};
</script>
</head>
8.9 _How can I see in javascript if a web browser accepts cookies_?
Write a cookie and read it back and check if it's the same.
<URL: http://www.w3schools.com/js/js_cookies.asp >
Additional Notes:
<URL: http://www.jibbering.com/faq/faq_notes/cookies.html >
<URL: http://www.ietf.org/rfc/rfc2965.txt >
<URL: http://www.galasoft-lb.ch/myjavascript/consulting/2001012701/ >
<URL: http://www.cookiecentral.com/ >
9 Windows and Frames
9.1 _How can I disable the back button in a web browser_?
You can't. The browser's history cannot be modified. However, you
can use location.replace(url); in some browsers to replace
the current page in the history.
<URL: http://msdn2.microsoft.com/en-us/library/ms536712.aspx >
<URL: http://docs.sun.com/source/816-6408-10/location.htm#1194240 >
9.2 _How do I communicate between frames in a web browser_?
To reference another frame, you simply need to step through the
frame hierarchy: parent is the page the frame is
defined in, parent.framename is another frame in the same
frameset. To access a variable called Moomin in a frame called Snork you
would use parent.Snork.Moomin. To call the function Snufkin
in that frame you would use parent.Snork.Snufkin().
Note that it is not possible to communicate between frames on
different domains this way.
9.3 _How do I find the size of the window_?
Here is a detailed explanation of a cross-browser strategy to
find the dimensions of the viewport, excepting all chrome
(excludes scrollbars, et c).
We can consider various properties:
window.innerWidth
document.clientWidth
document.documentElement.clientWidth
document.body.clientWidth
Of the browsers that have an innerWidth property, most
include scrollbar dimensions. Some versions of KHTML browsers
(including Safari 2) do _not_ include scrollbar width.
The window.inner* properties are unreliable and not
useful here. We don't want scrollbar dimensions included.
document.clientWidth
Certain versions of KHTML, including Safari 2, have
document.clientHeight and document.clientWidth
properties. Where supported, these rare properties accurately
return the height and width of the viewport, without including
scrollbar dimensions.
document.documentElement.clientWidth
document.body.clientWidth
MSHTML (Trident), Firefox (Gecko), Opera (Presto), and Safari
(Webkit) all support clientHeight on document.body
and document.documentElement. The difficulty is figuring out
which one is reliable. In other words which object to get the
clientHeight property from:documentElement or body?
What the number returned from either of these properties
represents depends on the environment. The environment includes
the browser, its version, and the rendering mode of the document.
In quirks mode, we'll mostly want to use body.clientHeight
(except for in Safari 2).
document.body.clientHeight
Some environments will return the viewport height. Others will
return 0. Yet others will return the clientHeight of
the BODY element.
document.documentElement.clientHeight
This is the more "standard" property for getting the height of
the viewport. It usually "works" in modern browsers in
standards mode. Notable exceptions include Safari 2 and
Opera <= 9.25, both of which return the clientHeight
of the html_element_. (Oddly, Opera <= 9.25
in standards mode returns the width of the viewport for
documentElement.clientWidth).
With the exception of Safari 2, body.clientHeight is reliable
where documentElement.clientHeight is found to be unreliable.
For example, in Safari 3+, Opera, and Mozilla, all in quirks mode,
document.documentElement.clientHeight returns the clientHeight
of the html element (this may seem unsurprising but
it is not what we want).
Conversely, document.body.clientHeight will return
the height of the viewport in most cases where
document.documentElement.clientHeight does not. An exception
to that is Safari 2, where documentElement.clientHeight
and body.clientHeight both return the height of their
corresponding element (not what we want).
By using a combination of Feature Testing and Capability Testing,
the dimensions of the viewport can be strategically retrieved
from the property that works in the environment the script is
running in. The trick is determining which property will give us
the value we want.
Since document.clientHeight is reliable where
(rarely) supported, and since browsers that support this property
don't return the viewport dimensions from
document.body.clientHeight or
document.documentElement.clientHeight, this should be the
very first condition:
// Safari 2 uses document.clientWidth (default).
if(typeof document.clientWidth == "number") {
// use document.clientWidth.
}
The next strategy is to determine if
document.documentElement.clientHeight property is unreliable.
It is deemed "unreliable" when it is either 0 or taller
than the viewport.
Determining if documentElement.clientHeight is 0 is easy.
The result is stored in a variable IS_BODY_ACTING_ROOT.
var docEl = document.documentElement,
IS_BODY_ACTING_ROOT = docEl && docEl.clientHeight === 0;
docEl = null;
To determine if documentElement.clientHeight returns
a value taller than the viewport, we need a Capability Test.
If we can force documentElement to be very tall
(taller than a normal viewport) we can then check to see if
documentElement.clientHeight returns that "very tall" number.
If it does, then it is unreliable.
We can force documentElement to be taller than the viewport
(or any "normal" viewport) by adding a div to the body,
give that div a height larger than any normal monitor,
and then check to see if documentElement.clientHeight is
that high (or "almost" that high, to account for documentElement
having a border).
// Used to feature test Opera returning wrong values
// for documentElement.clientHeight.
// The results of this function should be cached,
// so it does not need to be called more than once.
function isDocumentElementHeightOff(){
var d = document,
div = d.createElement('div');
div.style.height = "2500px";
d.body.insertBefore(div, d.body.firstChild);
var r = d.documentElement.clientHeight > 2400;
d.body.removeChild(div);
return r;
}
We can use this function to see if we should use
body.clientHeight, instead. (but only after checking if
document.clientHeight is supported).
// Safari 2 uses document.clientWidth (default).
if(typeof document.clientWidth == "number") {
// use document.clientHeight/Width.
}
else if(IS_BODY_ACTING_ROOT || isDocumentElementHeightOff()) {
// use document.body.clientHeight/Width.
} else {
// use document.documentElement.clientHeight/Width.
}
The preceding strategy was developed by Garrett Smith with input
from John David Dalton. A complete and tested example can be found
in APE Library under APE.dom.getViewportDimensions.
Source code:
<URL: http://dhtmlkitchen.com/ape/build/dom/viewport-f.js >.
APE is publicly released under Academic Free License.
APE home: <URL: http://dhtmlkitchen.com/ape/ >.
Note: The dimensions cannot be determined accurately until after
the document has finished loading.
<URL: http://msdn2.microsoft.com/en-us/library/ms533566.aspx >
<URL: http://developer.mozilla.org/en/DOM/window.innerWidth >
<URL: http://dev.opera.com/articles/view/using-capability-detection/ >
9.4 _How do I check to see if a child window is open, before opening another_?
var myWin;
function openWin(aURL) {
if (!myWin || myWin.closed ) {
myWin = window.open(aURL,'myWin');
} else {
myWin.location.href = aURL;
myWin.focus();
}
}
null
<URL: http://msdn2.microsoft.com/en-us/library/ms533574.aspx >
<URL: http://docs.sun.com/source/816-6408-10/window.htm#1201877 >
9.5 _Why does framename.print() not print the correct frame in IE_?
IE prints the frame that has focus when you call the print
method frameref.focus();frameref.print();
<URL: http://msdn2.microsoft.com/en-us/library/ms976105.aspx >
9.6 _How do I close a window and why does it not work on the first one_?
Use windowRef.close(), where windowRef is a Window object
reference, such as window, top, parent, self, or a reference
obtained from the window.open() method. You can only close
windows opened by scripts, no others.
<URL: http://msdn2.microsoft.com/en-us/library/ms536367.aspx >
<URL: http://docs.sun.com/source/816-6408-10/window.htm#1201822 >
<URL: http://developer.mozilla.org/en/docs/DOM:window.open#FAQ >
9.7 _Why do I get permission denied when accessing a frame/window_?
In the normal browser security model, it is impossible for a
script from one domain to access the properties of pages served
from another domain, or a different protocol. Any attempt to
access a property in such cases will result in a "Permission
Denied" error. Signed scripts or trusted ActiveX objects can
overcome this in limited situations.
<URL: http://msdn2.microsoft.com/en-us/library/ms533028.aspx >
9.8 _How do I make a 10 second delay_?
There is no built-in way to pause execution in javascript such
as a sleep function, but hosts usually provide a method of some
form. Web browsers are designed for event driven programming and
only provide the setTimeout and setInterval functions
to facilitate timed delays. The delay before calling Snork may
exceed the second parameter to setTimeout and setInterval
due to implementation differences among browsers.
To call the function Snork(), approximately 10 seconds
after the function Moomin() completes, you would do this:
Moomin();
setTimeout(Snork,10000);
Script execution is not stopped, and adding Snufkin() after the
setTimeout line would immediately execute the function Snufkin()
before Snork().
Achieving delays through running a loop of some sort for a pre-defined
period is a bad strategy, as that will inhibit whatever was supposed to
be happening during the delay, including blocking user interation.
Other (less event driven) hosts have different wait functions,
such as WScript.Sleep() in the Windows Script Host.
<URL: http://msdn2.microsoft.com/en-us/library/ms536753.aspx >
<URL: http://docs.sun.com/source/816-6408-10/window.htm#1203758 >
<URL: http://en.wikipedia.org/wiki/Event-driven_programming >
<URL: http://jibbering.com/faq/faq_notes/misc.html#mtSetTI >
9.9 _How do I change print settings for window.print()_?
In a normal security environment, you can't change anything. The
page stylesheet rules provide some options, but are not supported
in browsers yet. If you can, use an ActiveX or Plugin ScriptX and
Neptune from Meadroid to give you more control for Windows
versions of Internet Explorer, Netscape, and Opera.
<URL: http://www.meadroid.com/scriptx/ >
<URL: http://msdn2.microsoft.com/en-us/library/ms976105.aspx >
9.10 _How do I change the confirm box to say yes/no or default to cancel_?
The buttons on a confirm box cannot be changed, nor can you
specify a default button. However, you should be able to change
the question so that "OK" is suitable as the default.
e.g. change "We will now buy ourselves a Porsche with your credit
card, Do you want to continue with this transaction _OK_ Cancel"
to "We will now buy ourselves a Porsche with your credit card,
Would you like to abandon this transaction? _OK_ Cancel"
9.11 _How do I change the text in the url/location bar_?
This text can only be altered by changing the URL of the page.
9.12 _How do I prompt a "Save As" dialog for an accepted mime type_?
It is not possible with client-side javascript.
Some browsers accept the Content-Disposition header, but this
must be added by the server. Taking the form:-
Content-Disposition: attachment; filename=filename.ext
<URL: http://classicasp.aspfaq.com/general/how-do-i-prompt-a-save-as-dialog-for-an-accepted-mime-type.html >
<URL: http://support.microsoft.com/kb/q260519/ >
9.13 _I have window.status="Moomin"; why doesn't the statusbar change_?
When changing the status in an event (e.g. onmouseover) you
should return true from the event. Also a number of browsers
require a short delay before setting the status to overcome their
default behaviour with the statusbar.
onevent="setTimeout('window.status=\'Moomin\'',15);"
Most browsers are configured, by default, to disallow scripts from setting
the status bar text.
9.14 _How do I modify the current browser window_?
In a default security environment you are very limited in how much
you can modify the current browser window. You can use
window.resizeTo or window.moveTo to resize or move a
window respectively, but that is it. Normally you can only
suggest chrome changes in a window.open.
<URL: http://msdn2.microsoft.com/en-us/library/ms536651.aspx >
<URL: http://developer.mozilla.org/en/docs/DOM:window.open >
9.15 _How do I POST a form to a new window_?
Use the target attribute on the form, opening a window with
that name and your feature string in the onsubmit handler of the
FORM.
<form action="..." target="wndname" onsubmit="window.open('',this.target,'features');return true;">
<URL: http://www.htmlhelp.com/reference/html40/forms/form.html >
9.16 _How do I open a new window with javascript_?
New windows can be opened on browsers that support the
window.open function and are not subject to the action of any
pop-up blocking mechanism with code such as:-
var wRef;
if(window.open){
wRef = window.open("http://example.com/page.html","windowName");
}
<URL: http://developer.mozilla.org/en/docs/DOM:window.open >
<URL: http://www.infimum.dk/HTML/JSwindows.html >
10 Ajax and Server Communication
10.1 _What is Ajax_?
Ajax
is shorthand for Asynchronous JavaScript And XML. The technology is
based on the XMLHttpRequest Object.
At its simplest, it is the sending/retrieving of new data from the server
without changing or reloading the window location.
Mozilla Documentation:
<URL: http://developer.mozilla.org/en/docs/XMLHttpRequest >
MSDN Documention:
<URL: http://msdn2.microsoft.com/en-us/library/ms535874.aspx >
<URL: http://msdn2.microsoft.com/en-us/library/ms759148.aspx >
Libraries and Tutorial Sites:
<URL: http://jibbering.com/2002/4/httprequest.html >
<URL: http://www.ajaxtoolbox.com/ >
An alternative to the XMLHttpRequest Object is Remote Scripting:
<URL: http://www.ashleyit.com/rs/main.htm >
10.2 _How do I download a page to a variable_?
Although XMLHttpRequest can be used to download
entire pages, it is often used for downloading small pieces
of data that can be used to update the current page.
<URL: http://jibbering.com/2002/4/httprequest.html >
<URL: http://www.ajaxtoolbox.com/ >
10.3 _How do I get a jsp/php variable into client-side javascript_?
Use the server-side language to generate the javascript:
// JSP
var jsvar = "${ jspVar }";
// PHP
var jsvar = "<?php echo $phpVar ?>";
If the string contains a quote mark, it will have to be escaped.
If the an inline-script tag is used, and the string must not
contains characters such as <, >, &.
10.4 _How do I log-out a user when they leave my site_?
This cannot be done reliably. Here's why:
The user may disable javascript so the log-out script will
never execute.
The user may not be on-line when they close your web page.
Javascript errors elsewhere in the page may prevent the script
executing.
The browser may not support the onunload event, or may not fire
it under certain circumstances, so the log-out function will
not execute.
The URL below has more information.
<URL: http://groups.google.com/groups?selm=BlmZ7.55691%244x4.7344316%40news2-win.server.ntlworld.com >
10.5 _How do I run a server side script_?
You trigger a server-side script by sending an HTTP request.
This can be acheived by setting the src of an img,
Image, frame, or iframe,
or by using XHR.
An image will also
"swallow" the data sent back by the server, so that they will
not be visible anywhere.
var dummyImage = new Image();
dummyImage.src = "scriptURL.asp?param=" + varName;
Mozilla, Opera 7.6+, Safari 1.2+, and Windows IE 7
provide the XMLHttpRequest object
(Windows IE versions 5+, provides ActiveX to acheive an analagous
effect). XMLHttpRequest can send HTTP requests to
the server, and provides access the responseText or responseXML
(when the response is XML), and HTTP header information.
<URL: http://jibbering.com/2002/4/httprequest.html >
<URL: http://www.w3.org/TR/XMLHttpRequest/ >
<URL: http://developer.mozilla.org/en/XMLHttpRequest >
<URL: http://msdn.microsoft.com/en-us/library/ms537505(VS.85).aspx >
10.6 _How do I force a reload from the server/prevent caching_?
To reload a page, use location.reload(). However, this depends
upon the cache headers that your server sends. To change this,
you need to alter the server configuration. A quick fix on the
client is to change the page URI so that it contains a unique
element, such as the current time. For example:
location.replace(location.href+'?d='+new Date().valueOf())
If the location.href already contains a query String, use:
location.replace(location.href+'&d='+new Date().valueOf())
<URL: http://www.mnot.net/cache_docs/ >
<URL: http://docs.sun.com/source/816-6408-10/date.htm >
10.7 _Why is my Ajax page not updated properly when using an HTTP GET request in Internet Explorer_?
Browsers cache the results of HTTP requests to reduces network traffic.
To force the browser to request the document from the server, either
set the EXPIRES and/or CACHE-CONTROL response header(s)
with a past date or use a unique query string.
req.open("GET", "/example.jsp?date=" + (+new Date), true);
Always use the appropriate HTTP method. Do not use POST
to prevent caching. See RFC 2616 <URL: http://www.faqs.org/rfcs/rfc2616.html >.
<URL: http://www.mnot.net/cache_docs/#EXPIRES >
<URL: http://www.mnot.net/javascript/xmlhttprequest/cache.html >
11 Debugging
11.1 _How do I get my browser to report javascript errors_?
There are debugging tools for many browsers. Learn to use them all.
* Windows
Fiddler <URL: http://www.fiddlertool.com/fiddler/ >.
Fiddler is an HTTP Debugging proxy (it won't find script
errors). Fiddler logs HTTP activity, like Firebug's Net
tab, but can be attached to any browser running on Windows.
* Windows IE
Microsoft Script Editor. Free with Microsoft Word. To enable,
Tools, Internet Options, Advanced, and uncheck
Disable Script Debugging. After enabling Script Debugging,
a Script Debugger option will appear in the View menu.
For debugging scripts in IE, the Microsoft Script _Editor_
is recommended. However, if not available, the Microsoft Script Debugger <URL: http://www.microsoft.com/downloads/details.aspx?FamilyId=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&displaylang=en > may be somewhat helpful.
Internet Explorer Developer Toolbar <URL: http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&displaylang=en >
To report errors: Wait until a little yellow
triangle appears at the left end of the status bar, double click
on it and, when the error dialog box appears, check the "Always
show errors" checkbox it contains.
Or, Internet Options, Advanced, deselect "Disable Script Debugging",
select "Display a notification ...".
* Firefox
YSlow <URL: https://addons.mozilla.org/en-US/firefox/addon/5369 >.
YSlow analyzes web pages and tells you why they're slow
based on Yahoo's rules for high performance web sites.
Lori <URL: https://addons.mozilla.org/en-US/firefox/addon/1743 >Lori or Life-of-request info, is useful for troubleshooting
server response and page load time.
Web Developer Toolbar <URL: https://addons.mozilla.org/en-US/firefox/addon/60 >.
Cookie Watcher <URL: https://addons.mozilla.org/en-US/firefox/addon/1201 >.
XPather <URL: https://addons.mozilla.org/en-US/firefox/addon/1192 >.
XPath generator, editor and inspector.
* Opera
Tools > Advanced > Error console
Introduction to Opera Dragonfly <URL: http://dev.opera.com/articles/view/introduction-to-opera-dragonfly/ >
* Safari
To display the Develop menu in Safari 3.1 or higher, select
the checkbox labeled "Show Develop menu in menu bar" in
Safari's Advanced Preferences panel.
Safari Developer FAQ <URL: http://developer.apple.com/internet/safari/faq.html#anchor14 >
* Chrome
JavaScript Console: click the Page menu icon and select
Developer > JavaScript Console. From here, you'll be
able to view errors in the JavaScript execution, and enter
additional javascript commands to execute.
JavaScript Debugger: available as Page menu icon > Developer
Debug JavaScript, the debugger provides a command prompt from which youcan set breakpoints, backtrace, and more. Type help at the debugger
command line to get started.
Google Chrome Script Debugging <URL: http://www.google.com/chrome/intl/en/webmasters-faq.html#jsexec >
* Mac IE
Use the Preferences dialog.
12 Things not to attempt in a browser
12.1 _How can I prevent access to a web page by using javascript_?
In practice you can't. While you could create a suitable
encryption system with a password in the page, the level of
support you need to do this means it's always simpler to do it
server-side. Anything that "protects" a page
other than the current one is definitely flawed.
12.2 _How do I protect my javascript code_?
With clientside javascript you can't as your code is distributed
in source form and is easily readable. With JScript, there is the
Script Encoder (see MSDN), but this is nothing more than obfuscation.
Disabling the right mouse button also does nothing to protect
your script in a Web browser.
Your code is likely protected under copyright laws. See:
<URL: http://www.wipo.int/about-ip/en/copyright.html >
<URL: http://webdesign.about.com/od/copyright/Copyright_Issues_on_the_Web_Intellectual_Property.htm >
12.3 _How can I access the client-side filesystem_?
Security means that by default you can't. In a more restricted
environment, there are options. For example, using LiveConnect
to connect to Java with Netscape, and using the FileSystemObject
in IE. Check Google Groups archives <URL: http://groups.google.com/group/comp.lang.javascript/topics >
for previous posts on the subject.
<URL: http://msdn2.microsoft.com/en-us/library/z9ty6h50.aspx >
<URL: http://www.javaworld.com/javaworld/jw-10-1998/jw-10-apptowin32.html >
12.4 _I have <a href="javascript:somefunction()"> what ... _?
Whatever the rest of your question, this is generally a very bad idea.
The javascript: pseudo protocol was designed to replace the
current document with the value that is returned from the expression.
For example:
<a href="javascript:'<h1>' + document.lastModified + '</h1>'">lastModified</a>
will result in replacing the current document with the value
returned from document.lastModified, wrapped in an <h1>
tag.
When the expression used evaluates to an undefined value
(as some function calls do), the contents of the current page are not
replaced. Regardless, some browsers (notably IE6) interpret this as
navigation and will enter into a 'navigation' state where GIF
animations and image swaps will stop working.
It is also possible for IE to be configured such that it supports
javascript but not the javascript: protocol. This results
in the user seeing a protocol error for javascript: URIs.
The javascript: pseudo protocol creates accessibility and
usability problems in user agents that do not support javascript, or
have javascript disabled. It provides no fallback for when the script
is not supported.
Instead, use
<a href="something.html" onclick="somefunction();return false">
where something.html is a meaningful alternative. Alternatively,
attach the click callback using an event registry.
<URL: http://www.useit.com/alertbox/20021223.html >
13 Comments and Suggestions
13.1 _Why do some posts have <FAQENTRY> in them_?
If a poster feels that the question they are answering should be
covered in the FAQ, placing <FAQENTRY> in the post lets the FAQ
robot collect the messages for easy review and inclusion. A Draft Proposal
for the FAQ is requested and appreciated.
The <FAQENTRY> should not be used in posts except in
conjunction with a suggestion/proposal for the FAQ. It should
also not be literally quoted in replies, instead it should be
partly obscured as, e.g. <FAQ**TRY> or similar.
13.2 _How do I make a suggestion_?
To make a suggestion to the FAQ, use either the FAQENTRY method
above, or email Garrett Smith dhtmlkitchen@gmail.com (current FAQ editor)
or Jim Ley (jim.ley@gmail.com). All comments, suggestions, and
especially corrections are welcome.
1_Meta-FAQ meta-questions_
1.1 *Which newsgroups deal with javascript?*
1.2 *What questions are on-topic for comp.lang.javascript?*
1.3 *What should I do before posting to comp.lang.javascript?*
1.4 *Why was my post not answered?*
2_Language Overview_
2.1 *What is ECMAScript?*
2.2 *What is JScript?*
2.3 *What are object models?*
2.4 *What is the document object model?*
2.5 *Internationalisation and Multinationalisation in javascript.*
2.6 *What does the future hold for ECMAScript?*
3_Javascript Resources_
3.1 *What books are recommended for javascript?*
3.2 *What online resources are available?*
4_Dates_
see <URL: http://jibbering.com/faq/#FAQ4 >
Or Wednesdays FAQ posting.
5_Numbers_
5.1 *How do I format a Number as a String with exactly 2 decimal places?*
5.2 *Why does simple decimal arithmetic give strange results?*
5.3 *Why does K = parseInt('09') set K to 0?*
5.4 *Why does 1+1 equal 11? or How do I convert a string to a number?*
5.5 *How do I generate a random integer from 1 to N?*
6_Objects_
6.1 *When should I use eval?*
6.2 *How do I access a property of an object using a string?*
7_Strings and RegExp_
7.1 *How do I trim whitespace?*
8_DOM and Forms_
8.1 *How do I get the value of a form control?*
8.2 *My element is named myselect[], how do I access it?*
8.3 *Why doesn't the global variable "divId" always refer to the element with id="divId"?*
8.4 *Why are my rollovers so slow?*
8.5 *How do I disable the right mouse button?*
8.6 *How do I detect Opera/Netscape/IE?*
8.7 *How do I modify the content of the current page?*
8.8 *I get an error when trying to access an element by getElementById but
I know it is in the document. What is wrong?*
8.9 *How can I see in javascript if a web browser accepts cookies?*
9_Windows and Frames_
9.1 *How can I disable the back button in a web browser?*
9.2 *How do I communicate between frames in a web browser?*
9.3 *How do I find the size of the window?*
9.4 *How do I check to see if a child window is open, before opening another?*
9.5 *Why does framename.print() not print the correct frame in IE?*
9.6 *How do I close a window and why does it not work on the first one?*
9.7 *Why do I get permission denied when accessing a frame/window?*
9.8 *How do I make a 10 second delay?*
9.9 *How do I change print settings for window.print()?*
9.10 *How do I change the confirm box to say yes/no or default to cancel?*
9.11 *How do I change the text in the url/location bar?*
9.12 *How do I prompt a "Save As" dialog for an accepted mime type?*
9.13 *I have window.status="Moomin"; why doesn't the statusbar change?*
9.14 *How do I modify the current browser window?*
9.15 *How do I POST a form to a new window?*
9.16 *How do I open a new window with javascript?*
10_Ajax and Server Communication_
10.1 *What is Ajax?*
10.2 *How do I download a page to a variable?*
10.3 *How do I get a jsp/php variable into client-side javascript?*
10.4 *How do I log-out a user when they leave my site?*
10.5 *How do I run a server side script?*
10.6 *How do I force a reload from the server/prevent caching?*
10.7 *Why is my Ajax page not updated properly when using an HTTP GET request in Internet Explorer?*
11_Debugging_
11.1 *How do I get my browser to report javascript errors?*
12_Things not to attempt in a browser_
12.1 *How can I prevent access to a web page by using javascript?*
12.2 *How do I protect my javascript code?*
12.3 *How can I access the client-side filesystem?*
12.4 *I have <a href="javascript:somefunction()"> what ... ?*
13_Comments and Suggestions_
13.1 *Why do some posts have <FAQENTRY> in them?*
13.2 *How do I make a suggestion?*
.
- Prev by Date: Re: javascript alert freezes the screen
- Next by Date: Re: javascript debugger
- Previous by thread: Static class members
- Next by thread: W3C Document Object Model and Firefox
- Index(es):
Relevant Pages
|