【问题标题】:How to get skrollr.js working with turbolinks如何让 skrollr.js 使用 turbolinks
【发布时间】:2014-05-12 23:00:25
【问题描述】:

当您返回带有 turbolink 的页面时,Skrollr.js 似乎停止工作。如果您再次手动刷新页面或通过 data-no-turbolink 链接转到该页面,则效果很好。

我尝试使用所有可能的方式调用该函数,但仍然没有运气,主要是:

$(document).on('ready page:load', function () {
var s = skrollr.init(); 
});

$(document).on('ready page:change', function () {
    var s = skrollr.init(); 
    });

这里有一个类似的问题,但接受的答案是您应该禁用 turbolinks。我想知道如何让 skrollr 在启用 turbolinks 的情况下继续工作。

【问题讨论】:

    标签: javascript jquery ruby-on-rails turbolinks skrollr


    【解决方案1】:

    最后想通了。 您需要正常调用 skrollr 然后使用 skrollr.init().refresh();在您的 pushstate 插件的新页面或加载页面功能上。所以使用 turbolinks 使用这个:

    $(document).on('page:load', function () {
    skrollr.init().refresh(); 
    });
    

    希望这会为某人节省很多时间。

    【讨论】:

    • 先生,您的解决方案效果很好。非常感谢。确实,它为我节省了很多时间。
    【解决方案2】:

    我所做的是在 page:before-change 事件上调用 Skrollr destroy() 方法,我还修改了 skroll.js 并将这些事件命名为命名空间(向它们添加了 .skroll):

    _addEvent(window, 'resize.skroll orientationchange.skroll) …')
    

    所以在调用destroy()方法之后,还:

    $(window).off("resize.skroll");
    $(window).off("orientationchange.skroll");
    

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我也想通了。它比所有这些都简单得多,您只需要使用code $(document).on('page:load', function () { skrollr.init().refresh(); });跨度>
    • 对不起,听起来忘恩负义!
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多