0

我使用 html5 历史推送状态来加载一些博客文章页面。

在通过 pushstate 加载的每个页面内,我都有一个滑块(iosslider)。当我加载博客页面时,滑块不起作用。我想我需要回调 iosslider 脚本。

这是用于初始化它的 iosslider 脚本:

$('.iosSlider').iosSlider({
responsiveSlideContainer: true,
responsiveSlides: true,
snapToChildren: true,
desktopClickDrag: true,
keyboardControls: true,
infiniteSlider: true,
navSlideSelector: true,
autoSlide: true,
autoSlideTimer: 5000,
navNextSelector: $('.slider-next'),
navPrevSelector: $('.slider-prev'),
navSlideSelector: $('.slider-pagination .slider-page'),
onSlideChange: slideChange
});

触发 pushstate 时如何初始化脚本?

对不起我的英语,我是法国人。

4

1 回答 1

0

您可以使用window.onpopstate事件来调用脚本。

检查那里的文档:

https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history#The_popstate_event

编辑

你试过这个:

$(element).iosSlider('update');

http://iosscripts.com/iosslider/#installation-and-setup#public-methods

您在控制台中是否有任何错误?

编辑 2

我怀疑它与同步/异步有关。问题是当您使用 pushstate 时,页面并没有真正“重新加载”。我猜滑块的脚本刚刚停止,您需要重新启动它,但它已经实例化,您不能再次初始化它。

尝试:

$(element).iosSlider('destroy');

然后再次初始化。

在您的 onpopstate 函数中,将其放在此之后:

 if (event.state) {
        load_content(event.state.title, window.location.pathname, true);
        // here

编辑 3

利用:

$(window).load(function () { 
     // initialize
});

请注意,onload 将在 onpopstate 之前触发。

于 2013-06-10T14:55:35.750 回答