The Basics
There is no actual standard for the Browser Object Model and so those responsible for creating each different browser are free to implement the interface between Javascript and the browser in whichever way they want. Fortunately for the most part the browser writers have chosen to implement much of the BOM in exactly the same way.
All web browsers have implemented JavaScript so that all of the variables and functions that you create are properties and methods of the browser's window object (as are most of those built into JavaScript). All browsers also provide a consistent way of introducing delays into when your JavaScript runs. While the window.document element primarily contains the Document Object Model (which does follow a standard), there are also a few pieces of useful information about the browser stored there as well.
Swapping Pages
The Browser Object Model provides access to information about the address of the current page by reading from the location object and you can change the page either by updating the location or by selecting a different entry from the history.
More Cross Browser Options
Most of the other elements that the browsers have all implemented consistently are of less use. The options for opening, closing, resizing, and moving windows will only work if your visitor allows it. You can find out what the size of your visitor's screen is but that is only useful in connection with performing window manipulations since it has no relevance to anything inside the browser viewport.
The least useful of the BOM elements that is reasonably consistently implemented is the navigator element. Those properties which are consistently implemented are under your visitor's control and those which are not under your visitor's control are not consistently implemented.
Build Your Own
The lack of BOM standards means that the most useful information about the browser is presented in different ways in different browsers. We therefore need to build our own cross browser methods to look up the browser viewport size, current mouse position and page scroll position that gets the information from whichever of the different places that the various browsers provide that information in.
An efficient way to add all this functionality in one go is to use my dollarB object which has cross browser properties for viewport size and scroll position and methods for mouse position.


