我想确定是第一次执行sammyJS路由(如刷新浏览器),还是在页面初始加载后正在访问该路由。
我的用例是,在某些情况下执行路由时,新内容不可见,因为用户已向下滚动页面。当用户已经加载页面并且然后单击触发路由的链接时,我想执行$ .scrollTo,但是如果用户直接在地址栏中访问路由,则不会执行scrollTo。
最佳答案
如果您有主意,您只需要一个标志,该标志最初设置为false,然后在路由回调中切换为true。然后,如果该标志为false,则调用滚动方法。标志范围必须大于Sammy应用程序对象范围,即您应在调用Sammy初始化函数之前定义标志。每次浏览器重新加载页面时,标志都会再次为false(请记住,每次刷新/重新加载HTML页面时都会重新启动javascript引擎)。
如果需要将此逻辑应用于任何路由,则可以使用before
,after
和around
事件之一。查看the Sammy API docs以获得详细信息。