gitbook.require(["gitbook", "jQuery"], function(gitbook, $) { var copyButton = ''; var clipboard; gitbook.events.bind("page.change", function() { if (!ClipboardJS.isSupported()) return; // the page.change event is thrown twice: before and after the page changes if (clipboard) { // clipboard is already defined but we are on the same page if (clipboard._prevPage === window.location.pathname) return; // clipboard is already defined and url path change // we can deduct that we are before page changes clipboard.destroy(); // destroy the previous events listeners clipboard = undefined; // reset the clipboard object return; } $(copyButton).prependTo("div.sourceCode"); clipboard = new ClipboardJS(".copy-to-clipboard-button", { text: function(trigger) { return trigger.parentNode.textContent; } }); clipboard._prevPage = window.location.pathname }); });