History Keeper

Update: Beta 2 is out.

unFocus History Keeper is a JavaScript based library for managing browser history (back button) and providing support for deep linking for Flash and Ajax applications.

Demos, examples, and sightings in the wild, coming soon. In the mean time, you can check out the example page in SVN or check out adcSTUDO for a demo. The test page contains a small silly JavaScript application that takes what you put in a confirmation box, and makes a history entry out of it.

You can check out the latest version from SVN from either the trunk (I try to keep it working there, but no guarantees) or one of the tagged releases (each release gets a tag), or you can download the latest release archive from the downloads page on the google code site.

You will find three compressed JavaScript files in the root of the archive, unFocus-History-p.js and unFocus-HistorySwf-p.js.

unFocus-History-p.js contains:

  • EventManager.js
  • History.js

unFocus-HistorySwf-p.js contains:

  • EventManager.js
  • History.js
  • FlashPlayerInfo.js
  • SwfUtilities.js
  • SwfHTML.js

ObjectPatentMagic-p.js is a compressed version of Object Patent Magic of course.
Features:

  • Enables back button support, for your client-side web apps!
  • Hash based deep linking (Anchor Style - index.html#foo=bar)
  • Event driven - Subscriber pattern
  • Support for all current browsers:
    • recent Operas (mostly)
    • Firefox
    • Safari 1.2+
    • IE 5.5+

Known Limitations:

  • All history entries (back button states) modify the location string.
  • Doesn’t remember last entry if you leave the app and come back in some browsers (that’s a bug, I’ll fix it).
  • Editing the url manually will stop further updates to the url in some browsers.
  • Konqueror support is still a bit flaky (this history is off by one in an odd way).
  • Forward button doesn’t work in Safari 3.0 beta (after you press back).

Related Links - Note: I’m trying to put links to everyone who helped me out over the years. If I left you out, please let me know.