Вам нужно переопределить (обернуть) history.replaceState
, который использует другой скрипт:
(function(){
var rs = history.replaceState;
history.replaceState = function(){
rs.apply(history, arguments); // preserve normal functionality
console.log("navigating", arguments); // do something extra here; raise an event
};
}());
Без голосования, без потерь, без переписывания, без хлопот.
Сделайте то же самое для pushState или любых других нативов (например, ajax), которые вы хотите / нуждаетесь при написании пользовательских скриптов.