history.js is a cross-browser URL state manager and HTML5 History API polyfill. It functions as a single page application router that manages browser URL and history state consistently across HTML5 and HTML4 browsers, enabling navigation without triggering full page reloads.
The project provides a JavaScript framework adapter that integrates history management with the event systems of jQuery, MooTools, and Prototype. It ensures compatibility through a fallback mechanism that switches to hash-based navigation and hashbang URLs when the native HTML5 History API is unavailable.
The system covers broad capabilities including state management for associating and serializing data objects to history entries, asynchronous URL updates for AJAX state bookmarking, and session history navigation. It also includes support for crawler indexability, search history integration, and the ability to maintain continuous media playback during state changes.