我是javascript的新手,因此,如果我提出的问题显而易见,请原谅。
我在个人项目中使用Sennajs。我在gallery example中遇到问题。单击链接时,它会使页面跳到顶部。我曾经使用jquery中的此代码对其进行修复。但是,这也会阻止番泻叶的工作。
$('a').click(function(e) {
// do something
return false;
e.preventDefault();
});
任何帮助将不胜感激。
最佳答案
事实证明,您可以使用app.setUpdateScrollPosition(false)
来避免每次SennaJS导航后跳到页面顶部:
var app = new senna.App();
app.setUpdateScrollPosition(false);
// ...your code here...
旧解决方案(不推荐):
注意:此解决方案不必要地过于复杂,因为我在不了解
app.setUpdateScrollPosition(false)
之前就已编写了该解决方案。除了阻止执行SennaJS之外,您还可以在导航之前保存当前滚动位置,并在导航后滚动到正确的位置:
var app = new senna.App();
// ...your code here...
function getScrollTop() {
// Taken from Engineer's answer:
// https://stackoverflow.com/questions/11193453/find-the-vertical-position-of-scrollbar-without-jquery#11193613
return (window.pageYOffset !== undefined) ? window.pageYOffset :
(document.documentElement || document.body.parentNode || document.body).scrollTop;
}
var scrollTop = getScrollTop();
app.on('beforeNavigate', function(event) {
scrollTop = getScrollTop();
});
app.on('endNavigate', function(event) {
window.scrollTo(0, scrollTop);
});
有关滚动位置和JavaScript的更多信息,请参见Engineer的answer here和MDN's
window.scrollTo()
documentation。有关SennaJS生命周期事件的更多信息,请参见the SennaJS documentation
注意:这可能是SennaJS中的错误,因此我创建了a bug report (#184)。
关于javascript - 防止单击链接跳至Sennajs中的页面顶部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28505843/