Meteor iron:路由器检查路由是否加载了历史记录。返回
我试图检测用户是如何到达路线的。我想有三种情况:Meteor iron:路由器检查路由是否加载了历史记录。返回,meteor,iron-router,Meteor,Iron Router,我试图检测用户是如何到达路线的。我想有三种情况: 该页面由URL直接加载 该页面是通过单击链接加载的 通过单击浏览器中的历史后退或前进按钮加载页面 是否有任何方法可以检测到这3种情况,或者-这对我来说足够-检测到用户是否在第2种情况下到达路线 为什么? 在我的项目中,我有一个列表布局。当我向下滚动并单击此列表中的链接时,将呈现新模板,但由于列表中的滚动,窗口现在有一个scrollTop值 我用这个解决了这个问题: Router.configure({ onAfterAction : func
Router.configure({
onAfterAction : function () {
jQuery(window).scrollTop(0);
}
});
使用此修复程序,每次加载页面后,页面将滚动到顶部(与正常页面一样)
但是:
当我单击列表中的链接,然后单击浏览器中的“后退”按钮(history.Back)时,页面也会滚动到顶部(因为我的修复)-没有修复,页面将自动跳转到最后一个位置
因此,我需要这样的东西:
Router.configure({
onAfterAction : function () {
var historyBack;
historyBack = CheckIfHistoryBackWasClicked();
if (!historyBack) jQuery(window).scrollTop(0);
}
});
Router.configure({
onAfterAction : function () {
if (Session.get("scrollToTop") == true) {
jQuery(window).scrollTop(0);
Session.set("scrollToTop", false);
}
}
});
有人知道吗?尝试在链接中添加一个
单击事件处理程序,并在那里设置一个scrollToTop
会话变量:
"click a": function(e) {
Session.set("scrollToTop", true);
return true;
}
然后,像这样做:
Router.configure({
onAfterAction : function () {
var historyBack;
historyBack = CheckIfHistoryBackWasClicked();
if (!historyBack) jQuery(window).scrollTop(0);
}
});
Router.configure({
onAfterAction : function () {
if (Session.get("scrollToTop") == true) {
jQuery(window).scrollTop(0);
Session.set("scrollToTop", false);
}
}
});
当然,这是可能的,但在这种情况下,我发现使用会话是错误的。没有javascript解决方案吗/我不知道您是否来自这样一个背景,“会话”意味着您将使用服务器内存来保存信息,但在本例中,它只是意味着您正在创建一个被动变量。Meteor会话变量仅保留在客户端中,不在选项卡之间共享。你最终会了解到这是Meteor中很多事情的最佳解决方案。进一步阅读:没错——我知道Meteor会话,这非常有用——但如果可能的话,我会尽量避免使用会话。把所有事情都安排在会议上是错误的。