Manipulating Frames in Script
Frames object is a collection of all of the frame windows in the current frameset. Each frame is a
Window object in itself, and has its own
Document object to represent the HTML in the frame. This really isn’t as confusing as it might sound—it mimics the organization of frames without an object model. The top-level frame subdivides the browser window and loads separate HTML pages for each frame.
It can be confusing to use this property though. By default the
Document object that a script refers to are the
Document objects of the current frame. This means that, if we execute a script in the left-hand frame of a two-frame window, the
Frames objects the script uses will be those of the left-hand frame. Since the left-hand frame has no sub-frames, examining the
Count property of the
Frames collection will return
However, if we use the
Top (or, in this case,
Parent) property of the left-hand frame’s
Window object, we can gain access to the top-level frameset that loaded both the frames. Examining the
Count property of this
Frames collection will show the expected value of
2, because this top-level page has loaded two frames.
We’re giving this brief coverage here because it’s both a simple and complex topic. In the sense that the
Frames collection has only one property,
Count, and that it just provides access to other objects that we’ve covered before, like
Document, it is a simple object. However, the relationships between the different frames in a frameset can be complex, and to best understand how it works, we should really see some code. A more in-depth example of using frames with the object model is part of the next chapter.