Как изменить ссылку страницы

В свои бородатые студенческие годы я читал, что JavaScript не умеет менять адрес ссылки в браузере по соображениям безопасности. Но видимо стандарты поменялись с приходом HTML5.

http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/

Список браузеров, поддерживающих history API:
http://caniuse.com/#search=history

Но встаёт вопрос - как поймать эвент перехода вперёд-назад в браузере? Вот решение:

(function(history){
    var pushState = history.pushState;
    history.pushState = function(state) {
        if (typeof history.onpushstate == "function") {
            history.onpushstate({state: state});
        }
        return pushState.apply(history, arguments);
    }
})(window.history);
window.onpopstate = history.onpushstate = function(e) {
    alert('bam!');
};