pushState will not do your page backward / forward pushState its own. What you need to do is listen onpopstate and load content similar to what happens when clicked.
var load = function (name, skipPushState) { $("#hideGraphStuff").hide(); // pre-load, etc ... $.post("pages/getPriceDeckData.php",{data : name}, function(data){ // on-load, etc ... // we don't want to push the state on popstate (eg 'Back'), so `skipPushState` // can be passed to prevent it if (!skipPushState) { // build a state for this name var state = {name: name, page: 'Price Deck'}; window.history.pushState(state, "Price Deck", "?p=priceDeck&dN="+ name); } }); } $(document).on("click", ".priceDeckLink", function() { var name = $(this).text(); load(name); }); $(window).on("popstate", function () { // if the state is the page you expect, pull the name and load it. if (history.state && "Price Deck" === history.state.page) { load(history.state.name, true); } });
Note that history.state is a slightly less supported part of the history API. If you want to support all pushState browsers, you will have to have a different way of pushState current state using the tooltip, possibly by parsing the URL.
It would be trivial and probably nice to also cache priceCheck results for the name and pull them back / forth from the cache instead of making more php requests.
numbers1311407
source share