【问题标题】:Next route opens not from the top of a page (scrolls lower). Why?下一条路线不是从页面顶部打开(向下滚动)。为什么?
【发布时间】:2015-08-05 19:04:19
【问题描述】:

有人遇到过同样的问题吗?我正在使用具有模板级订阅的 Iron 路由器。
例如。我有一个长页面“项目列表”,我可以向下滚动。然后我单击底部某处的某个项目,下一个模板呈现低于应有的水平。
想象一下,您在 youtube 上搜索,向下滚动结果,然后单击视频 sn-p,但它不是从顶部打开而是从下方打开,因此您需要返回顶部才能看到视频。


我尝试将“滚动到顶部”脚本放入 onRendered 回调中,但这种“跳转”可以用肉眼识别。所以它变得更糟。


(更新)我现在找到了这个解决方案:

Router.onBeforeAction(function() {
  $(window).scrollTop(0);
  this.next();
});

【问题讨论】:

标签: meteor iron-router


【解决方案1】:

如果您使用的是 FlowRouter,您可以轻松地将其添加到 triggersEnter 路由定义中:

const publicRoutes = FlowRouter.group({
  name: 'public',
  triggersEnter: [() => {
    window.scrollTo(0, 0);
  }],
});

【讨论】:

  • 全局设置可以使用FlowRouter.triggers.enter([ () => { window.scrollTo(0, 0); } ]);
【解决方案2】:

你应该试试这个

meteor add okgrow:iron-router-autoscroll

参考:https://github.com/okgrow/iron-router-autoscroll

【讨论】:

【解决方案3】:

尝试将其放入您的代码中,如果您使用 React,请将其放入 componentDidMount() 函数中

window.scrollTo(0, 0);

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多