Javascript 在Sennajs中防止点击链接跳到页面顶部
我是javascript的新手,所以如果我问一些显而易见的问题,请原谅 我正在使用我的个人项目。我有一个问题,像在。单击链接时,页面会跳转到顶部。我曾经使用jquery中的这段代码来修复它。然而,它也阻止了塞纳的工作Javascript 在Sennajs中防止点击链接跳到页面顶部,javascript,senna.js,Javascript,Senna.js,我是javascript的新手,所以如果我问一些显而易见的问题,请原谅 我正在使用我的个人项目。我有一个问题,像在。单击链接时,页面会跳转到顶部。我曾经使用jquery中的这段代码来修复它。然而,它也阻止了塞纳的工作 $('a').click(function(e) { // do something return false; e.preventDefault(); }); 任何帮助都将不胜感激。在实际调用preventDefault之前,请返回return。以下工
$('a').click(function(e) {
// do something
return false;
e.preventDefault();
});
任何帮助都将不胜感激。在实际调用
preventDefault
之前,请返回return
。以下工作将起作用:
$(function(){
$('a').click(function(e) {
e.preventDefault();
return false;
});
});
代码不起作用的原因是,您在执行任何操作之前返回了
$('a').click(function(e) {
e.preventDefault();
// do something
return 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的更多信息,请参阅的和
有关SennaJS生命周期事件的更多信息,请参阅
注意:这可能是SennaJS中的一个bug,所以我创建了它。是的。然而,我不知道如何让Sennajs做点什么。这是我的问题。请帮忙。那就不要把它当作链接…?谢谢你提供的信息。出于SEO原因,我必须使用链接:(是的。但是,我不知道如何让//用Sennajs做点什么。这是我的问题。请帮助。你到底想做什么?我建议只显示更多代码,这样我们就可以看到我在问题中提到的真实问题。他们的示例库也有这个问题。当你点击任何图像链接时,它会跳到页面顶部。你可以在这里找到它。)你在页面顶部的意思是什么。似乎每次单击图像时,新页面都会加载该照片。这是ajax。它不会加载完全新的页面。你可以通过打开浏览器检查工具了解这一点。