diff --git a/src/service/autoScroll.js b/src/service/autoScroll.js
index 7b5b28e4..223400f4 100644
--- a/src/service/autoScroll.js
+++ b/src/service/autoScroll.js
@@ -10,9 +10,7 @@
* according to rules specified in
* {@link http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document Html5 spec}.
*
- * If `$location` uses `hashbang` url (running in `hashbang` mode or `html5` mode on browser without
- * history API support), `$autoScroll` watches the `$location.hash()` and scroll whenever it
- * changes.
+ * It also watches the `$location.hash()` and scroll whenever it changes to match any anchor.
*
* You can disable `$autoScroll` service by calling `disable()` on `$autoScrollProvider`.
* Note: disabling is only possible before the service is instantiated !
@@ -54,12 +52,11 @@ function $AutoScrollProvider() {
else if (hash === 'top') $window.scrollTo(0, 0);
}
- // scroll whenever hash changes (with hashbang url, regular urls are handled by browser)
- if ($location instanceof LocationHashbangUrl) {
- $rootScope.$watch(function() {return $location.hash();}, function() {
- $rootScope.$evalAsync(scroll);
- });
- }
+ // does not scroll when user clicks on anchor link that is currently on
+ // (no url change, no $locaiton.hash() change), browser native does scroll
+ $rootScope.$watch(function() {return $location.hash();}, function() {
+ $rootScope.$evalAsync(scroll);
+ });
return scroll;
}];
diff --git a/test/service/autoScrollSpec.js b/test/service/autoScrollSpec.js
index 86a47f50..4f4dd0e2 100644
--- a/test/service/autoScrollSpec.js
+++ b/test/service/autoScrollSpec.js
@@ -169,12 +169,12 @@ describe('$autoScroll', function() {
});
- it('should not scroll when html5 mode with history api', function() {
+ it('should scroll when html5 mode with history api', function() {
module(initLocation({html5Mode: true, historyApi: true}));
inject(
addElements('id=some'),
changeHashAndDigest('some'),
- expectNoScrolling()
+ expectScrollingTo('id=some')
);
});