diff --git a/src/ng/location.js b/src/ng/location.js
index 3196b1d57b7c..e99137d5cd4a 100644
--- a/src/ng/location.js
+++ b/src/ng/location.js
@@ -577,6 +577,10 @@ function $LocationProvider(){
     // update $location when $browser url changes
     $browser.onUrlChange(function(newUrl) {
       if ($location.absUrl() != newUrl) {
+        if ($rootScope.$broadcast('$locationChangeStart', newUrl, $location.absUrl()).defaultPrevented) {
+          $browser.url($location.absUrl());
+          return;
+        }
         $rootScope.$evalAsync(function() {
           var oldUrl = $location.absUrl();