EPUB.js Spreads Example
‹ › var params = URLSearchParams && new URLSearchParams(document.location.search.substring(1)); var url = params && params.get("url") && decodeURIComponent(params.get("url")); var currentSectionIndex = (params && params.get("loc")) ? params.get("loc") : undefined; // Load the opf //var book = ePub(url || "https://s3.amazonaws.com/moby-dick/moby-dick.epub"); var book = ePub(url || "https://www.buckyverse.org/en/zome_primer/zome_primer.epub", {requestCredentials: true}); var rendition = book.renderTo("viewer", { width: "100%", height: 640, spread: "always" }); rendition.display(currentSectionIndex); book.ready.then(function() { var next = document.getElementById("next"); next.addEventListener("click", function(e){ book.package.metadata.direction === "rtl" ? rendition.prev() : rendition.next(); e.preventDefault(); }, false); var prev = document.getElementById("prev"); prev.addEventListener("click", function(e){ book.package.metadata.direction === "rtl" ? rendition.next() : rendition.prev(); e.preventDefault(); }, false); var keyListener = function(e) // Right Key if ((e.keyCode || e.which) == 39) { book.package.metadata.direction === "rtl" ? rendition.prev() : rendition.next(); } }; rendition.on("keyup", keyListener); document.addEventListener("keyup", keyListener, false); }) var title = document.getElementById("title"); rendition.on("rendered", function(section) var $options = $select.querySelectorAll("option"); for (var i = 0; i < $options.length; ++i) { let selected = $options[i].getAttribute("ref") === current.href; if (selected) { $options[i].setAttribute("selected", ""); } } } }); rendition.on("relocated", function(location) else { next.style.visibility = "visible"; } if (location.atStart) { prev.style.visibility = "hidden"; } else { prev.style.visibility = "visible"; } }); rendition.on("layout", function(layout) { let viewer = document.getElementById("viewer"); if (layout.spread) { viewer.classList.remove('single'); } else { viewer.classList.add('single'); } }); window.addEventListener("unload", function () { console.log("unloading"); this.book.destroy(); }); book.loaded.navigation.then(function(toc)); $select.appendChild(docfrag); $select.onchange = function(){ var index = $select.selectedIndex, url = $select.options[index].getAttribute("ref"); rendition.display(url); return false; }; });