}
}
- // Kill the slide listeners while responding to the event
- removeSlideListeners();
-
// Update the note slides
currentSlide.contentWindow.Reveal.slide( data.indexh, data.indexv );
nextSlide.contentWindow.Reveal.slide( data.nextindexh, data.nextindexv );
currentSlide.contentWindow.Reveal.prevFragment();
}
- // Resume listening on the next cycle
- setTimeout( addSlideListeners, 1 );
-
}, false );
- function addSlideListeners() {
- currentSlide.contentWindow.Reveal.addEventListener( 'slidechanged', onNotesSlideChange, false );
- nextSlide.contentWindow.Reveal.addEventListener( 'slidechanged', onNotesSlideChange, false );
- }
-
- function removeSlideListeners() {
- currentSlide.contentWindow.Reveal.removeEventListener( 'slidechanged', onNotesSlideChange, false );
- nextSlide.contentWindow.Reveal.removeEventListener( 'slidechanged', onNotesSlideChange, false );
- }
-
- function onNotesSlideChange( event ) {
- window.opener.postMessage( JSON.stringify({
- indexh : event.indexh,
- indexv : event.indexv
- }), '*' );
- }
-
- addSlideListeners();
-
})( window );
}, false );
notesPopup.postMessage( JSON.stringify( slideData ), '*' );
}
- // The main presentation is kept in sync when navigating the
- // note slides so that the popup may be used as a remote
- window.addEventListener( 'message', function( event ) {
- var data = JSON.parse( event.data );
-
- if( data && typeof data.indexh === 'number' && typeof data.indexv === 'number' ) {
- Reveal.slide( data.indexh, data.indexv );
- }
- } );
-
// Navigate to the current slide when the notes are loaded
notesPopup.addEventListener( 'load', function( event ) {
post('slidechanged');