是否可以使用javascript捕获浏览器地址栏中的URL更改

是否可以使用javascript捕获浏览器地址栏中的URL更改,javascript,angularjs,url-rewriting,location,Javascript,Angularjs,Url Rewriting,Location,从angular或JavaScript是否可以捕获浏览器地址栏中的URL更改 如果有人手动更改浏览器地址栏中的URL,我希望捕获此事件。您可以检测哈希中的更改(例如http://example.com/#foo)通过如下方式创建事件处理程序: window.addEventListener('hashchange', function(e) { console.log('Hash has changed!'); }); 特别是对于angular,您可以使用$routechanges

从angular或JavaScript是否可以捕获浏览器地址栏中的URL更改


如果有人手动更改浏览器地址栏中的URL,我希望捕获此事件。

您可以检测哈希中的更改(例如
http://example.com/#foo
)通过如下方式创建事件处理程序:

window.addEventListener('hashchange', function(e) { 
    console.log('Hash has changed!'); 
});
特别是对于angular,您可以使用
$routechangestart
事件捕获URL中的更改(即路由)


或者,您可以通过routeProvider定义路由,并根据设置的路由执行特定的控制器。

您还可以通过以下方式捕获路由:

$rootScope.$on('$routeChangeStart', function(params) { 
   //catch event
});

您可以在和

上阅读更多关于它的信息,收听hashchange在HTML5模式下不起作用。始终使用$routeChangeStart with angularI我添加了角度方式,尽管他要求使用JS或角度解决方案。是的,但他用url重写标记了这个问题,这意味着他将使用HTML5Mode。我的问题是,当有人手动更改浏览器地址栏中的url时,我如何捕获。嗨@cbass,$scope.$on无法捕捉手动更改url时的内容,我的意思是。如果用户按enter键,可能会导致浏览器重新加载;然后还要重新初始化应用程序,这意味着没有要捕获的事件。您的意思是无法捕获此事件。是的,如果您修改url并按enter键,浏览器将重新加载页面。除非你阻止这是一种方式。这并不能回答问题。我不知道为什么OP会接受这个。
$rootScope.$on('$routeChangeStart', function(params) { 
   //catch event
});