我有一个页面可以在信息之间进行一些垂直滚动。我正在使用sammy来绕过它。但是,如果有人在单击链接后手动向上滚动页面以进入页面的某个部分,则他们再次单击相同的链接,操作不会运行,因为哈希是相同的。
以下是该问题的简化示例......
$.sammy('body', function() {
this.before(/.*/, function () {
console.log('before');
});
this.get('#/add/:number', function(context) {
$("#content").append("badger");
});
}).run();
<a href="#/add/1">Add One</a>
<a href="#/add/2">Add Two</a>
<br>
<div id="content">Badger hole.</div>
有没有办法让路由再次使用相同的哈希运行?或者还有其他方法可以解决这种情况吗?我可以看到为什么这对某些应用程序来说是一个坏主意,但是当涉及基于滚动的导航时,这很有意义。
在我的路线中使用window.location.hash = window.location.hash + "?something"
只更改网址,因此它不再完全匹配。这个将工作,除了它螺旋形成无限循环并崩溃浏览器。手动为每个链接附加一个不同的参数是一个选项,但由于显而易见的原因,它是愚蠢的。
我尝试使用具有类似效果的after
回调。