Skip to content
Free

DOM events and the JavaScript API

Listen to what readers do in the viewer, start viewers added after page load, and use Flipset's own PDF.js safely.

1 min read Updated

On this page

Events#

The viewer dispatches bubbling CustomEvents on its .flipset-viewer element. event.detail always includes fileUrl plus:

EventExtra detail
flipset:readynumPages, viewMode
flipset:pagechangepage, numPages
flipset:zoomzoom, fitMode (page, width, none)
flipset:searchquery, hitsCount, currentHit
flipset:printpage, pages
flipset:download—
flipset:errorstage (render)
document.addEventListener( 'flipset:pagechange', function ( e ) {
	console.log( e.detail.page, 'of', e.detail.numPages );
} );

// Send a GA4 event when someone finishes a document.
document.addEventListener( 'flipset:pagechange', function ( e ) {
	if ( e.detail.page === e.detail.numPages && window.gtag ) {
		gtag( 'event', 'pdf_finished', { file: e.detail.fileUrl } );
	}
} );

Flipset Pro adds flipset:lead and, for EPUB, flipset:relocated. See Pro hooks.

FlipsetViewer#

MethodUse
FlipsetViewer.bind( element )Start a .flipset-viewer added after page load (AJAX, tabs, popups).
FlipsetViewer.setViewMode( element, mode )Switch to page, scroll, spread or flip.
FlipsetViewer.rebind( element )Destroy and start again (for example after changing data-file).
var el = document.querySelector( '#my-modal .flipset-viewer' );
FlipsetViewer.bind( el );
FlipsetViewer.setViewMode( el, 'flip' );

Viewers marked data-flipset-defer are not started automatically — the library and the Pro lightbox use this to start viewers only when opened.

Flipset's PDF.js#

window.Flipset.pdfjsLib is Flipset's bundled PDF.js 3.11.174. Use it instead of window.pdfjsLib: Flipset restores the global to whatever it was before (another plugin's copy, or nothing), so it never collides with other PDF plugins. Point workerSrc at FlipsetConfig.workerSrc.