views:

298

answers:

5

I've been looking around JQuery libraries for the URL hash, but found none that were good. There is the "history plugin", but we all know it's buggy and isn't flexible.

I am loading my pages inside a div. I'll need a way to do back/forward along with the url hashing.

mydomain.com/#home
mydomain.com/#aboutus
mydomain.com/#register

What's the best library that can handle all of this?

A: 

AFAIK, all history plugins do the same thing:

setInterval(function() {
   if(theHashChanged) {
      someFunction(oldHash,newHash);
   }
}, 500/*whatever*/);

That's pretty the core of it (minus browser hacks for adding history entries without clicking a link, etc.). It's always going to be buggy because it's a bit of a hack and there is no cross browser API for handling history changes.

On top of all that, the user experience for this sort of thing is not very good. Users don't understand when they have to click the back button 4 times to get off the page.

noah
-1: Not at all helpful. And since when do users expect that the back-button takes them off the page? Do you only surf flash-sites?
nikow
@nikow it's based on my experience with a large, public facing site. Just because you can implement something like this, doesn't mean you should. I honestly can't think of a single site where this feature is more helpful than annoying.
noah
@nikow - "since when do users expect that the back-button takes them off the page?" Since the web and web browsers where first introduced, I would say ;). The normal function of the back-button is of course to go from the current page to the previous page.
Lars
@Lars: Yes. So if I'm e.g. browing amazon and first visit one book and then another I expect that the back-button takes me back to the first one, not off the amazon website. How amazon implements their page (using the hash or whatever) shouldn't matter at all. That is the whole point of the question.
nikow
@noah: Maybe you should "educate" your employer about their mistake: If I click on the back-button on optaros.com that brings me back to the prebious visited subpage on their website, it doesn't take me off their site.
nikow
@nikow Now you're just trolling. Who said anything about the back button taking them off the site? The back button goes back to the last page. The user can tell the difference between an Ajax load and a new page (if they can't, why bother with the Ajax?) and does not typically expect an Ajax load to result in a history entry.
noah
+5  A: 

I recently looked at 3 different plugins - jquery history plugin, history, and jQuery BBQ.

They were all quite hard to setup, I did get jQuery.history working but it still had problems with IE7. So I changed to BBQ and it worked fine across all our target browsers (IE6, IE7, IE8, Fx3).

So I recommend the jQuery BBQ plugin.

Edit: here's a blog post I just wrote which demonstrates jQuery BBQ with cascading dropdowns.

Matt Frear
A: 

I've had good luck with reallysimplehistory (nee dhtmlHistory). It's not jQuery specific, but it works in IE, firefox, and webkit, and doesn't require much setup.

kevingessner
A: 

Perhaps try this jQuery History plugin: http://www.balupton.com/sandbox/jquery-history/demo/ It provides cross browser support, binding to hashes, overloading hashes, all the rest.

There is also a Ajax extension for it, allowing it to easily upgrade your webpage into a proper Ajax application: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

This is the solution chosen by such sites as http://wbhomes.com.au/ and http://gatesonline.com.au/stage/public/

Overall it is well documented, supported and feature rich. It's also won a bounty question here http://stackoverflow.com/questions/3205900/how-to-show-ajax-requests-in-url/3276206#3276206

balupton
A: 

Have you tried jQuery Address? From Asual, the guys who made SWFAdress. Asual - jquery Address

The jQuery Address plugin provides powerful deep linking capabilities and allows the creation of unique virtual addresses that can point to a website section or an application state.

Batailley