【发布时间】:2013-01-02 17:03:04
【问题描述】:
我想确定是第一次执行 sammyJS 路由(如在刷新浏览器时),还是在页面初始加载后访问该路由。
我的用例是,在某些情况下,当执行路由时,新内容是不可见的,因为用户向下滚动了页面。当用户已经加载页面并点击触发路由的链接时,我想做一个 $.scrollTo,但是如果用户直接在地址栏中访问该路由,则不会执行 scrollTo。
【问题讨论】:
标签: javascript sammy.js
我想确定是第一次执行 sammyJS 路由(如在刷新浏览器时),还是在页面初始加载后访问该路由。
我的用例是,在某些情况下,当执行路由时,新内容是不可见的,因为用户向下滚动了页面。当用户已经加载页面并点击触发路由的链接时,我想做一个 $.scrollTo,但是如果用户直接在地址栏中访问该路由,则不会执行 scrollTo。
【问题讨论】:
标签: javascript sammy.js
如果我明白你的想法,你只需要一个最初设置为 false 的标志,然后在路由回调中切换为 true。然后,如果标志为假,则调用滚动方法。标志范围必须大于 Sammy 应用对象范围,即您应该在调用 Sammy 初始化函数之前定义标志。每次浏览器重新加载页面时,该标志将再次为 false(请记住,javascript 引擎在每次 HTML 页面刷新/重新加载时重新启动)。
如果您需要将此逻辑应用于任何路由,您可以使用before、after 和around 事件之一。详情请查看the Sammy API docs。
【讨论】: