Why
$(function () { $(window).bind(\'popstate\', function () {alert(\'pop\');}); window.history.pushState(null, \'\', \'/foo\'); });
I ran into this too... I think the event only fires if you have something at the top level of your data object that is distinct from the previous state.
Try this:
var data = {rand: Math.random()}; window.history.pushState(data, '', '/foo');