如何让skrollr.js使用turbolinks

时间:2014-05-12 23:00:26

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

当你回到带有turbolinks的页面时,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在启用turbolink的情况下工作。

2 个答案:

答案 0 :(得分:5)

最终计算出来。 你需要正常调用skrollr然后使用skrollr.init()。refresh();在您的pushstate插件的新页面或加载页面功能上。因此,使用turbolinks可以使用:

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

希望这可以节省很多时间。

答案 1 :(得分:0)

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

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

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

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

希望这有帮助。