History

The History interface allows manipulation of the browser session history, that is the pages visited in the tab or frame that the current page is loaded in.

Properties

The History interface doesn't inherit any property.

History.length Read only
Returns an Integer representing the number of elements in the session history, including the currently loaded page. For example, for a page loaded in a new tab this property returns 1.
History.current Read only Obsolete since Gecko 26
Returns a DOMString representing the URL of the active item of the session history. This property was never available to web content and is no more supported by any browser. Use Location.href instead.
History.next Read only Obsolete since Gecko 26
Returns a DOMString representing the URL of the next item in the session history. This property was never available to web content and is not supported by other browsers.
History.previous Read only Obsolete since Gecko 26
Returns a DOMString representing the URL of the previous item in the session history. This property was never available to web content and is not supported by other browsers.
History.scrollRestoration 
Allows web applications to explicitly set default scroll restoration behavior on history navigation. This property can be either auto or manual.
History.state Read only
Returns an any value representing the state at the top of the history stack. This is a way to look at the state without having to wait for a popstate event.

Methods

The History interface doesn't inherit any methods.

History.back()
Goes to the previous page in session history, the same action as when the user clicks the browser's Back button. Equivalent to history.go(-1).
Calling this method to go back beyond the first page in the session history has no effect and doesn't raise an exception.
History.forward()
Goes to the next page in session history, the same action as when the user clicks the browser's Forward button; this is equivalent to history.go(1).
Calling this method to go forward beyond the most recent page in the session history has no effect and doesn't raise an exception.
History.go()
Loads a page from the session history, identified by its relative location to the current page, for example -1 for the previous page or 1  for the next page. If you specify an out-of-bounds value (for instance, specifying -1 when there are no previously-visited pages in the session history), this method silently has no effect. Calling go() without parameters or a value of 0 reloads the current page. Internet Explorer lets you also specify a string to go to a specific page in the history list.
History.pushState()
Pushes the given data onto the session history stack with the specified title and, if provided, URL. The data is treated as opaque by the DOM; you may specify any JavaScript object that can be serialized.  Note that Firefox currently ignores the title parameter; for more information, see manipulating the browser history.
History.replaceState()
Updates the most recent entry on the history stack to have the specified data, title, and, if provided, URL. The data is treated as opaque by the DOM; you may specify any JavaScript object that can be serialized.  Note that Firefox currently ignores the title parameter; for more information, see manipulating the browser history.

Specifications

Specification Status Comment
HTML Living Standard
The definition of 'History' in that specification.
Living Standard Adds the scrollRestoration attribute.
HTML5
The definition of 'History' in that specification.
Recommendation Initial definition.
Custom Scroll Restoration - History-based API
The definition of 'History' in that specification.
Editor's Draft Adds the scrollRestoration attribute.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
pushState and replaceState 5.0 (Yes) 4.0 [1] 10 11.5 5
scrollRestoration 46.0 No support 46.0 (46.0) No support 33 (Yes)[2]
Feature Android Android Webview Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
pushState and replaceState 2.2 (Yes) (Yes) (Yes) 10 (Yes) 4.3 (Yes)
scrollRestoration No support 46.0 No support (Yes) No support (Yes) (Yes)[2] 46.0

[1] In Firefox 2 through 5, the passed object is serialized using JSON. Starting in Firefox 6, the object is serialized using the structured clone algorithm. This allows a wider variety of objects to be safely passed.

[2] WebKit bug 147782

See also

  • The Window.history property returning the history of the current session.

Document Tags and Contributors

 Last updated by: abehan,