0

html5 history 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 をトリガーするときにスクリプトを初期化するにはどうすればよいですか?

私の英語でごめんなさい、私はフランス人です。

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
});

onpopstate の前に onload がトリガーされることに注意してください。

于 2013-06-10T14:55:35.750 に答える