NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @id Explain XKCD Button // @name Explain XKCD Button // @icon http://i.imgur.com/bktNyTc.png // @version 1.2 // @namespace http://obskyr.io/ // @homepageURL http://obskyr.io/ // @author Samuel (@obskyr) // @description Add a link to explainxkcd to each and every XKCD page. // @include /^https?://(www.)?xkcd.com/([0-9]+/)?$/ // @exclude /^https?://(www.)?xkcd.com/404/?$/ // @run-at document-end // ==/UserScript== var comicNumberRe = new RegExp("Permanent link to this comic: https?://xkcd.com/([0-9]+)", "g"); var middleContainer = document.getElementById("middleContainer"); var pageText = middleContainer.textContent || middleContainer.innerText; var comicNumber = comicNumberRe.exec(pageText)[1]; var titleDiv = document.getElementById("ctitle"); var comicTitle = titleDiv.textContent || middleContainer.innerText; var comicNavs = document.getElementsByClassName("comicNav"); var explainUrl = "http://www.explainxkcd.com/wiki/index.php/" + comicNumber.toString() + ":_" + encodeURIComponent(comicTitle.split(" ").join("_")); for (var i = 0; i < comicNavs.length; i++) { var nav = comicNavs[i]; var li = document.createElement("li"); var button = document.createElement("a"); var buttonText = document.createTextNode("Explain"); button.appendChild(buttonText); button.setAttribute("href", explainUrl); li.appendChild(button); nav.insertBefore(li, nav.children[3]); }