Cómo detectar cambios de URL en SPA

Nota

La solución debe estar en Javascript puro: sin biblioteca y marcos externos.

En SPA, todo se enruta utilizando un mecanismo de enrutamiento. Solo quiero escuchar incluso cada vez que cambie alguna parte de la URL (no solo el hash. Cualquier cambio que quiera detectar)

El siguiente es un ejemplo de SPA,

https://www.google.in/
https://www.google.in/women 
https://www.google.in/girl 

Ahora cada vez que la URL cambie dehttps://www.hopscotch.in/ ahttps://www.hopscotch.in/womenQuiero capturar ese evento.

Lo intenté,

window.addEventListener("hashchange",function(event){
    console.log(this); // this gets fired only when hash changes
});

Respuestas a la pregunta(2)

Su respuesta a la pregunta