Browser environment, specs
The JavaScript language was initially created for web browsers. Since then, it has evolved into a language with many uses and platforms. A platform may be a browser, or a web-server or another host, or even a “smart” coffee machine if it can run JavaScript. Each of these provides platform-specific functionality. The JavaScript specification calls that a host environment. A host environment provides its own objects and functions in addition to the language core. Web browsers give a means to control web pages. Node.js provides server-side features, and so on. Here’s a bird’s-eye view of what we have when JavaScript runs in a web browser: There’s a “root” object called window. It has two roles: 1. First, it is a global object for JavaScript code, as described in the chapter info:global-object. 2. Second, it represents the “browser window” and provides methods to control it. For instance, we can use it as a global object: And we can use it as a browser window, to show the window height: There are more window-specific methods and properties, which we’ll cover later.
DOM (Document Object Model)
The Document Object Model, or DOM for short, represents all page content as objects that can be modified. The document object is the main “entry point” to the page. We can change or create anything on the page using it. For instance: Here, we used document.body.style, but there’s much, much more. Properties and methods are described in the specification: DOM Living Standard.
BOM (Browser Object Model)
The Browser Object Model (BOM) represents additional objects provided by the browser (host environment) for working with everything except the document. For instance: - The navigator object provides background information about the browser and the operating system. There are many properties, but the two most widely known are: navigator.userAgent – about the current browser, and navigator.platform – about the platform (can help to differentiate between Windows/Linux/Mac etc). - The location object allows us to read the current URL and can redirect the browser to a new one. Here’s how we can use the location object: The functions alert/confirm/prompt are also a part of the BOM: they are not directly related to the document, but represent pure browser methods for communicating with the user.
Summary
- DOM specification
- Describes the document structure, manipulations, and events, see https://dom.spec.whatwg.org. CSSOM specification
- Describes stylesheets and style rules, manipulations with them, and their binding to documents, see https://www.w3.org/TR/cssom-1/. HTML specification
- Describes the HTML language (e.g. tags) and also the BOM (browser object model) – various browser functions: setTimeout, alert, location and so on, see https://html.spec.whatwg.org. It takes the DOM specification and extends it with many additional properties and methods. Additionally, some classes are described separately at https://spec.whatwg.org/. Please note these links, as there’s so much to learn that it’s impossible to cover everything and remember it all. When you’d like to read about a property or a method, the Mozilla manual at https://developer.mozilla.org/en-US/ is also a nice resource, but the corresponding spec may be better: it’s more complex and longer to read, but will make your fundamental knowledge sound and complete. To find something, it’s often convenient to use an internet search “WHATWG [term]” or “MDN [term]”, e.g https://google.com?q=whatwg+localstorage, https://google.com?q=mdn+localstorage. Now, we’ll get down to learning the DOM, because the document plays the central role in the UI.
function sayHi() {
alert("Hello");
}
// global functions are methods of the global object:
window.sayHi();
Follow the lesson from Microsoft Web-Dev-For-Beginners course