Navigation to same route fails

How2reproduce: 1. Click on Foo 2. Click Foo-3 3. Scroll up 4. Repeat step 2 Result: Screen stays at the same position and doesnt scroll to Foo-3

by ParachuteKadse

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.6.0/vue-router.js"></script>
<div id="app-root">
  <h1>Issue Reproduction</h1>
  <router-link to="/foo">Foo</router-link>
  <h1>Nav</h1>
  <router-view></router-view>
</div>
<script type="text/x-template" id="foo-template">
  <section>
    <router-link :to="{path: '/foo', hash: 'foo-1'}">Foo-1</router-link>
    <router-link :to="{path: '/foo', hash: 'foo-2'}">Foo-2</router-link>
    <router-link :to="{path: '/foo', hash: 'foo-3'}">Foo-3</router-link>
    <h2 id="foo-1">Foo-1</h2>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <h2 id="foo-2">Foo-2</h2>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <h2 id="foo-3">Foo-3</h2>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
    <p>???</p>
  </section>
</script>
<script>


</script>

CSS

p {
  margin: 100px 0;
}

JavaScript

var FooComponent = {
  template: '#foo-template'
};
var routes = [{
  path: '/foo',
  component: FooComponent
}];
var scrollBehavior = function(to, from, savedPosition) {
  if (to.hash) {
    return {
      selector: to.hash
    }
  } else {
    return {
      x: 0,
      y: 0
    }
  }
};
var router = new VueRouter({
  routes: routes,
  scrollBehavior: scrollBehavior,
  mode: 'history'
});
var app = new Vue({
  el: '#app-root',
  router: router
});