jquery pushstate回调脚本

时间:2013-06-10 14:41:31

标签: jquery callback pushstate

我使用html5历史记录pushstate加载一些博客帖子页。

在每个加载的页面内通过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时如何初始化脚本?

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

1 个答案:

答案 0 :(得分: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
});

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