我是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的更多信息,请参见Engineeranswer hereMDN's window.scrollTo() documentation

有关SennaJS生命周期事件的更多信息,请参见the SennaJS documentation

注意:这可能是SennaJS中的错误,因此我创建了a bug report (#184)

关于javascript - 防止单击链接跳至Sennajs中的页面顶部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28505843/

10-10 15:37