[Contents] [Previous] [Next] [Index]
JavaScript lets you create and manipulate windows and frames for presenting HTML
content. The window
object is the top-level object in the JavaScript client
hierarchy; Frame
objects are similar to window
objects, but
correspond to "sub-windows" created with the FRAME
tag in a FRAMESET
document.
NOTE: The JavaScript Guide has not been updated to include information about layers. Layers are new to JavaScript 1.2. For information on layers, see Dynamic HTML in Netscape Communicator.
A window is created automatically when you launch Navigator; you can open another window by choosing New Navigator Window from the File menu. You can close a window by choosing either Close or Exit from the File menu. You can also open and close windows programmatically with JavaScript.
You can create a window with the open
method. The following statement
creates a window called msgWindow
that displays the contents of the file sesame.html
:
msgWindow=window.open("sesame.html")
The following statement creates a window called homeWindow
that displays
the Netscape home page:
homeWindow=window.open("http://home.netscape.com")
Windows can have two names. The following statement creates a window with two names.
The first name, msgWindow
, is a variable that refers to the window
object. This object has information on the window's properties, methods, and
containership. When you create the window, you can also supply a second name, in this case
displayWindow
, to refer to that window as the target of a form submit or
hypertext link.
msgWindow=window.open("sesame.html","displayWindow")
A window name is not required when you create a window. But the window must have a name if you want to refer to it from another window.
msgWindow=window.open ("sesame.html","displayWindow","toolbar=no,scrollbars=yes")
For more information on window names, see
"Referring to Windows and Frames". For details on these window attributes, see thewindow.open
method in the JavaScript Reference.
You can close a window with the close
method. You cannot close a frame
without closing the entire parent window.
Each of the following statements closes the current window:
window.close() self.close() close()
Do not use the third form, close()
, in an event handler. Because of how
JavaScript figures out what object a method call refers to, inside an event handler it
will get the wrong object.
The following statement closes a window called msgWindow
:
msgWindow.close()
A frameset is a special type of window that can display multiple, independently scrollable frames on a single screen, each with its own distinct URL. The frames in a frameset can point to different URLs and be targeted by other URLs, all within the same window. The series of frames in a frameset make up an HTML page.
Figure 4.1 depicts a window
containing three frames. The frame on the left is named listFrame
; the frame
on the right is named contentFrame
; the frame on the bottom is named navigateFrame
.
You create a frame by using the FRAMESET
tag in an HTML document; this
tag's sole purpose is to define the frames in a page.
Example 1. The following statement creates the frameset shown previously:
<FRAMESET ROWS="90%,10%"> <FRAMESET COLS="30%,70%"> <FRAME SRC=category.html NAME="listFrame"> <FRAME SRC=titles.html NAME="contentFrame"> </FRAMESET> <FRAME SRC=navigate.html NAME="navigateFrame"> </FRAMESET>
Figure 4.2
shows the hierarchy of the frames. All three frames have the same parent, even though two of the frames are defined within a separate frameset. This is because a frame's parent is its parent window, and a frame, not a frameset, defines a window.Figure 4.2 An example frame hierarchy
You can refer to the previous frames using the frames
array as follows. (For information on the frames
array, see the Window
object in the JavaScript Reference.)
listFrame
is top.frames[0]
contentFrame
is top.frames[1]
navigateFrame
is top.frames[2]
Example 2. Alternatively, you could create a window like the previous one but in
which the top two frames have a parent separate from navigateFrame
. The
top-level frameset would be defined as follows:
<FRAMESET ROWS="90%,10%"> <FRAME SRC=muskel3.html NAME="upperFrame"> <FRAME SRC=navigate.html NAME="navigateFrame"> </FRAMESET>
The file muskel3.html
contains the skeleton for the upper frames and
defines the following frameset:
<FRAMESET COLS="30%,70%"> <FRAME SRC=category.html NAME="listFrame"> <FRAME SRC=titles.html NAME="contentFrame"> </FRAMESET>
Figure 4.3
shows the hierarchy of the frames.upperFrame
and navigateFrame
share a parent: the top
window. listFrame
and contentFrame
share a parent: upperFrame
.
Figure 4.3 Another example frame hierarchy
You can refer to the previous frames using the frames
array as follows. (For information on the frames
array, see the Window
object in the JavaScript Reference.)
upperFrame
is top.frames[0]
navigateFrame
is top.frames[1]
listFrame
is upperFrame.frames[0]
or top.frames[0].frames[0]
contentFrame
is upperFrame.frames[1]
or top.frames[0].frames[1]
For an example of creating frames, see
"Creating and Updating Frames: an Example".You can update the contents of a frame by using the location
property to
set the URL, as long as you specify the frame hierarchy.
<INPUT TYPE="button" VALUE="Titles Only" onClick="top.frames[0].location='artists.html'">
When a user clicks this button, the file artists.html
is loaded into the
frame upperFrame
; the frames listFrame
and contentFrame
close and no longer exist.
Because frames are a type of window, you refer to frames and navigate among them as you do windows. See
"Referring to Windows and Frames" and "Navigating among Windows and Frames".If you designed the frameset in the previous section to present the available titles for a music club, the frames and their HTML files could have the following content:
category.html
, in the frame listFrame
, contains a list of
musicians sorted by category.titles.html
, in the frame contentFrame
, contains an
alphabetical list of musicians and the titles available for each.navigate.html
, in the frame navigateFrame
, contains hypertext
links the user can click to choose how the musicians are displayed in listFrame
:
alphabetically or by category. This file also defines a hypertext link users can click to
display a description of each musician.alphabet.html
, contains a list of musicians sorted
alphabetically. This file is displayed in listFrame
when the user clicks the
link for an alphabetical list.The file category.html
(the categorical list) contains code similar to the
following:
<B>Music Club Artists</B> <P><B>Jazz</B> <LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A> <LI><A HREF=titles.html#0006 TARGET="contentFrame">John Coltrane</A> <LI><A HREF=titles.html#0007 TARGET="contentFrame">Miles Davis</A> <LI><A HREF=titles.html#0010 TARGET="contentFrame">Dexter Gordon</A>
<P><B>Soul</B> <LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Carter</A> <LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A> ...
The file alphabet.html
(the alphabetical list) contains code similar to
the following:
<B>Music Club Artists</B> <LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A> <LI><A HREF=titles.html#0002 TARGET="contentFrame">The Beatles</A> <LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Carter</A> <LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A> ...
The file navigate.html
(the navigational links at the bottom of the
screen) contains code similar to the following. Notice that the target for artists.html
is "_parent." When the user clicks this link, the entire window is overwritten,
because the top
window is the parent of navigateFrame
.
<A HREF=alphabet.html TARGET="listFrame"><B>Alphabetical</B></A>     <A HREF=category.html TARGET="listFrame"><B>By category</B></A>     <A HREF="artists.html" TARGET="_parent"> <B>Musician Descriptions</B></A>
The file titles.html
(the main file, displayed in the frame on the right)
contains code similar to the following:
<A NAME="0001"><H3>Toshiko Akiyoshi</H3></A> <P>Interlude
<A NAME="0002"><H3>The Beatles</H3></A> <P>Please Please Me
<A NAME="0003"><H3>Betty Carter</H3></A> <P>Ray Charles and Betty Carter ...
The name you use to refer to a window depends on whether you are referring to a window's properties, methods, and event handlers or to the window as the target of a form submit or a hypertext link.
You can refer to the properties, methods, and event handlers of the current window or another window (if the other window is named) using any of the following techniques:
self
or window
: self
and window
are synonyms for the current window, and you can use them optionally to refer to the
current window. For example, you can close the current window by calling either window.close()
or self.close()
.top
or parent
: top
and parent
are
also synonyms that you can use in place of the window name. top
can be used
for any window; it refers to the topmost Navigator window. parent
can be used
for a frame; it refers to the frameset window that contains that frame. For example, for
the frame frame1
, the statement parent.frame2.document.bgColor="teal"
changes the background color of the frame named frame2
to teal, where frame2
is a sibling frame in the current frameset.msgWindow.close()
closes a window called msgWindow
.close()
closes the current window. However, when you
open or close a window within an event handler, you must specify window.open()
or window.close()
instead of simply using open()
or close()
.
Because of the scoping of static objects in JavaScript, a call to close()
without specifying an object name is equivalent to document.close()
.For more information on these techniques for referring to windows, see the Window
object in the
if (document.musicForm.checkbox1.checked) { alert('The checkbox on the musicForm is checked!')}
Example 2: refer to another window. The following statements refer to a form named musicForm
in a window named checkboxWin
. The statements determine if a checkbox is
checked, check the checkbox, determine if the second option of a Select
object is selected, and select the second option of the Select
object. Even
though object values are changed in another window (checkboxWin
), the current
window remains active: checking the checkbox and selecting the selection option do not
give focus to the window.
// Determine if a checkbox is checked if (checkboxWin.document.musicForm.checkbox2.checked) { alert('The checkbox on the musicForm in checkboxWin is checked!')}
// Check the checkbox checkboxWin.document.musicForm.checkbox2.checked=true
// Determine if an option in a Select object is selected if (checkboxWin.document.musicForm.musicTypes.options[1].selected) {alert('Option 1 is selected!')}
// Select an option in a Select object checkboxWin.document.musicForm.musicTypes.selectedIndex=1
Example 3: refer to a frame in another window. The following statement refers to a
frame named frame2
that is in a window named window2
. The
statement changes the background color of frame2
to violet. The frame name, frame2
,
must be specified in the FRAMESET
tag that creates the frameset.
window2.frame2.document.bgColor="violet"
You use a window's name (not the window variable) when referring to a window as the
target of a form submit or hypertext link (the TARGET
attribute of a FORM
or A
tag). The window you specify is the window into which the link is loaded
or, for a form, the window in which server responses are displayed.
<FORM> <INPUT TYPE="button" VALUE="Open Second Window" onClick="msgWindow=window.open('','window2', 'resizable=no,width=200,height=200')"> <P> <A HREF="doc2.html" TARGET="window2"> Load a file into window2</A> <P> <INPUT TYPE="button" VALUE="Close Second Window" onClick="msgWindow.close()"> </FORM>
If the user selects the Open Second Window button first and then the link, Communicator
opens the small window specified in the button and then loads doc2.html
into
it.
Many Navigator windows can be open at the same time. The user can move among these windows by clicking them to make them active, or give them focus. When a window has focus, it moves to the front and changes visually in some way. For example, the color of the window's title bar might change. The visual cue varies depending on which platform you are using.
You navigate among frames the same way as you navigate among windows.
checkboxWin=window.open("doc2.html") ... checkboxWin.document.musicForm.city.focus()
Example 2: give focus to another window using a hypertext link. The following
statement specifies window2
as the target of a hypertext link. When the user
clicks the link, focus switches to window2
. If window2
does not
exist, it is created.
<A HREF="doc2.html" TARGET="window2"> Load a file into window2</A>
[Contents] [Previous] [Next] [Index]
Last Updated: 11/26/97 09:25:35
Copyright ?1997 Netscape Communications Corporation