【发布时间】:2017-12-10 19:29:33
【问题描述】:
我有一个带有以下路由器配置的小型 Vue.js SPA,取自docs:
export default new VueRouter({
routes, // defined above...
mode: 'history',
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return { selector: to.hash }
} else if (savedPosition) {
return savedPosition;
} else {
return { x: 0, y: 0 }
}
}
})
考虑主页上的链接:
<router-link to="#services">Services</router-link>
它按预期跳转到锚元素<div id="services">...</div>。但是,当您激活链接,然后从#services 滚动并刷新页面时,您将不会回到#services。即使 URL 中仍包含哈希(例如,app.dev/#services 的形式),您仍将停留在您离开的位置。
如果 URL 包含其散列(并且,该散列对应于有效的现有元素),我如何配置路由器以便在页面加载时将用户带到锚元素?
【问题讨论】:
-
这是一个浏览器功能,如果它记得你离开的地方,覆盖(期望的)默认行为。为了确保,当浏览器历史记录被搁置(即使用新的隐身/私人浏览窗口)时,它是否按预期工作?当然,您总是可以通过在页面准备好后引用然后 .click() 以编程方式触发路由器链接“点击”。
标签: vue.js vuejs2 vue-router