# webContents > Render and control web pages. Process: [Main](../glossary.md#main-process) `webContents` is an [EventEmitter][event-emitter]. It is responsible for rendering and controlling a web page and is a property of the [`BrowserWindow`](browser-window.md) object. An example of accessing the `webContents` object: ```javascript const { BrowserWindow } = require('electron') const win = new BrowserWindow({ width: 800, height: 1500 }) win.loadURL('http://github.com') const contents = win.webContents console.log(contents) ``` ## Navigation Events Several events can be used to monitor navigations as they occur within a `webContents`. ### Document Navigations When a `webContents` navigates to another page (as opposed to an [in-page navigation](web-contents.md#in-page-navigation)), the following events will be fired. * [`did-start-navigation`](web-contents.md#event-did-start-navigation) * [`will-frame-navigate`](web-contents.md#event-will-frame-navigate) * [`will-navigate`](web-contents.md#event-will-navigate) (only fired when main frame navigates) * [`will-redirect`](web-contents.md#event-will-redirect) (only fired when a redirect happens during navigation) * [`did-redirect-navigation`](web-contents.md#event-did-redirect-navigation) (only fired when a redirect happens during navigation) * [`did-frame-navigate`](web-contents.md#event-did-frame-navigate) * [`did-navigate`](web-contents.md#event-did-navigate) (only fired when main frame navigates) Subsequent events will not fire if `event.preventDefault()` is called on any of the cancellable events. ### In-page Navigation In-page navigations don't cause the page to reload, but instead navigate to a location within the current page. These events are not cancellable. For an in-page navigations, the following events will fire in this order: * [`did-start-navigation`](web-contents.md#event-did-start-navigation) * [`did-navigate-in-page`](web-contents.md#event-did-navigate-in-page) ### Frame Navigation The [`will-navigate`](web-contents.md#event-will-navigate) and [`did-navigate`](web-contents.md#event-did-navigate) events only fire when the [mainFrame](web-contents.md#contentsmainframe-readonly) navigates. If you want to also observe navigations in `