您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some tweaks to xkcd.com and what-if.xkcd.com
当前为
// ==UserScript== // @name xkcd Tweaks // @description Some tweaks to xkcd.com and what-if.xkcd.com // @include /^(https?:)?(\/\/)?(www\.)?(what-?if\.)?xkcd\.com/ // @author Mital Ashok // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABX0lEQVRYhcWVMZIEIQhFOYrhHM8baGjoEbyRYYcehY2cchXwt7O9Q1VXzQDKAxSJiPjLH/G3xARwzi20zrnnAaTAT4GIAGjvJAkhLH4hBBxgzl5ZIFbBqpxWsQXAyk4CQYJbEH8GcNo2EQAVC2CU1to9gE8rIJW6t2gLoDlKC8dAyPWEAOZslAWLDYWGAE5ONBFxa00N3s8BBGCBbO6z2f/bAPPmiM/H11AjtzL03sMA3nsM4M5YfQRgLJn2WxK09CZAz75nOm4y206rpgJIAeYsJJ9T6AVAGzKW7hR6AZDKNZZV0xsb/9IZoPIB211DLbgGPdpEgFlmoN2JZmautS7QtVbVfzsHXq/XorNevJQSExGXUriUwkTEKaX7AJ3+ui5Rv9mQY4wcYzybA1YgFGD+r7UBGkSorWecc37rcs5mG0SAu1nO+nHej+/EvwGgehFgvD47AHQdYMOe0qe+Hzm8hknb8QYpAAAAAElFTkSuQmCC // @namespace https://greasyfork.org/en/users/59570-mital-ashok // @license http://creativecommons.org/licenses/by-sa/4.0/ // @version 1.0.4 // @grant none // @noframes // @run-at document-start // ==/UserScript== var border = true, hr = true, titleText = true, snap = false, explainButton = true, transcript = true; if (/(?:^\?|&)tweaks=(?:false|f|0|&|$)/i.test(window.location.search)) { throw ''; } var time = new Date().getTime(), redirect, location_, lastNumber, xhttp, expired, localLatest, inner, number, random, main; if (/^\/?(?:\d+\/)?random\/?/.test(window.location.pathname)) { localLatest = localStorage.latestComic; if (typeof localLatest === 'undefined') { expired = true; } else { expired = localLatest[1] <= time; } var next = function() { number = +window.location.pathname.match(/^\/?(\d+\/)?random\/?$/)[1]; if (!isNaN(number)) { lastNumber--; } random = Math.floor(Math.random() * lastNumber) + 1; if (random >= number) { random++; } redirect = window.location.origin + '/' + random + '/'; inner = '<!DOCTYPE HTML><html><head><meta charset="UTF-8"><meta http-equiv="refresh" content="0;url=' + redirect + '"><script type="text/javascript">window.location.href = "' + redirect + '"</script><title>Redirecting to /' + random + '/ ...</title></head><body>If you are not redirected automatically, follow the <a href="' + redirect + '">link to /' + random + '/</a>.</body></html>'; window.addEventListener('load', function() { window.location.pathname = '/' + random + '/'; document.documentElement.innerHTML = inner; }); window.location.pathname = '/' + random + '/'; document.documentElement.innerHTML = inner; setTimeout(function() { window.location.pathname = '/' + random + '/'; document.documentElement.innerHTML = inner; }, 500); }; if (expired) { xhttp = new XMLHttpRequest(); xhttp.open('get', '/', true); xhttp.onreadystatechange = function() { if (xhttp.readyState == XMLHttpRequest.DONE) { lastNumber = +xhttp.response.match(/<a href="\/\/what-if\.xkcd\.com\/(\d+)\/"><h1>/)[1]; localStorage.latestComic = lastNumber + ',' + (time + 6.048e+8); next(); } }; xhttp.send(); } else { lastNumber = localLatest.split(',')[0]; next(); } } else { if (/^\/?\d+(?!\/)$/.test(window.location.pathname)) { window.location.pathname += '/'; } location_ = window.location.href.toLowerCase().replace(/^(?:http(s?):)?(?:\/\/)?(?:www\.)?/, 'http$1://') .replace(/^https?:\/\/whatif/, 'https://what-if') .replace(/^https:\/\/xkcd.com\/1663/, 'http://xkcd.com/1663') .replace(/\/#$/, '/'); if (location_ !== window.location.href) { window.location.replace(location_); } if (document.readyState === 'loading') { window.addEventListener('load', main); } else { main(); } } function main() { function repeat(interval, func, onCompletion) { if (typeof onCompletion === 'undefined') { onCompletion = function() {}; } if (func()) { onCompletion(); return; } var intervalId = setInterval(function() { if (func()) { clearInterval(intervalId); onCompletion(); } }, interval); } function disable(nodeList) { return function disable() { Array.prototype.forEach.call(nodeList, function(currentValue) { currentValue.style.visibility = 'hidden'; currentValue.removeAttribute('href'); currentValue.style.cursor = 'default'; currentValue.parentElement.style.MozUserSelect = 'none'; currentValue.parentElement.style.webkitUserSelect = 'none'; currentValue.parentElement.style.userSelect = 'none'; }); return Array.prototype.every.call(nodeList, function(currentValue) { return currentValue.style.visibility === 'hidden' && !currentValue.hasAttribute('href') && currentValue.style.cursor === 'default'; }); }; } function activeIsEditable() { var node = document.activeElement; var name = node.nodeName.toLowerCase(); return node.isContentEditable || node.nodeType == 1 && (name == "textarea" || name == "input" && /^(?:text|email|number|search|tel|url|password|)$/i.test(node.type)); } var isWhatIf = /^(https?:)?(\/\/)?(www\.)?what-if/i.test(window.location.href), number, first, last, left = 37, right = 39, n = 78, p = 80, r = 82; if (isWhatIf) { last = false; var setRandom = function(create) { if (!receivedResponse.received) { if (receivedResponse.onreceive !== false) { receivedResponse.onreceive = !!create; } return; } if (create) { var addRandom = function(ulTag) { var liTag = document.createElement('li'), aTag = document.createElement('a'); aTag.href = './random/'; aTag.className = 'random-button'; aTag.appendChild(document.createTextNode('Random')); liTag.appendChild(aTag); if (last) { ulTag.insertBefore(liTag, ulTag.lastChild); } else { ulTag.insertBefore(liTag, ulTag.lastChild.previousSibling); } if (first) { liTag.style.marginLeft = '8.57552em'; } }; navs = document.getElementsByClassName('main-nav'); addRandom(navs[0].firstElementChild); addRandom(navs[1].firstElementChild); } else { window.location.pathname = number + '/random/'; } }, receivedResponse = {'received': false, 'onreceive': null}, navs, addButtons, expired; localLatest = localStorage.latestComic; if (typeof localLatest === 'undefined') { expired = true; } else { expired = localLatest[1] <= time; } if (expired) { xhttp = new XMLHttpRequest(); xhttp.open('get', '/', true); xhttp.onreadystatechange = function() { if (xhttp.readyState == XMLHttpRequest.DONE) { lastNumber = +xhttp.response.match(/<a href="\/\/what-if\.xkcd\.com\/(\d+)\/"><h1>/)[1]; receivedResponse.received = true; localStorage.latestComic = lastNumber + ',' + (time + 6.048e+8); if (receivedResponse.onreceive !== null) { setRandom(receivedResponse.onreceive); } } }; xhttp.send(); } else { lastNumber = localLatest.split(',')[0]; receivedResponse.received = true; } document.addEventListener('keydown', function(event) { var keyCode = event.keyCode; if ((keyCode === right || keyCode === n) && !last) { Array.prototype.forEach.call(document.getElementsByTagName('a'), function(currentValue) { if (currentValue.firstChild !== null) { if (currentValue.firstChild.textContent === 'Next') { currentValue.click(); } } }); } else if ((keyCode === left || keyCode === p) && !first) { Array.prototype.forEach.call(document.getElementsByTagName('a'), function(currentValue) { if (currentValue.firstChild !== null) { if (currentValue.firstChild.textContent === 'Prev') { currentValue.click(); } } }); } else if (keyCode === r) { setRandom(); } }); var headATag = document.getElementsByTagName('h1')[0].parentElement; number = +headATag.getAttribute('href').slice(19, -1); first = true; last = true; Array.prototype.forEach.call(document.getElementsByTagName('a'), function(currentValue) { if (currentValue.firstChild) { if (currentValue.firstChild.textContent === 'Prev') { first = false; } if (currentValue.firstChild.textContent === 'Next') { last = false; } } }); if (/^(https?:)?(\/\/)?(www\.)?what-if\.xkcd\.com\/\d+/i.test(window.location.href)) { repeat(100, function() { headATag.removeAttribute('href'); headATag.style.textDecoration = 'underline'; return !headATag.hasAttribute('href') && headATag.style.textDecoration === 'underline'; }); } setRandom(true); addButtons = function(navTag) { var ulTag = navTag.firstElementChild, aTag; navTag.style.width = '23.5em'; if (!first) { var firstTag = document.createElement('li'); aTag = document.createElement('a'); aTag.appendChild(document.createTextNode('First')); aTag.href = '/1/'; firstTag.appendChild(aTag); firstTag.className = 'nav-prev'; ulTag.insertBefore(firstTag, ulTag.firstChild); } if (!last) { var lastTag = document.createElement('li'); aTag = document.createElement('a'); aTag.appendChild(document.createTextNode('Last')); aTag.href = '/'; lastTag.appendChild(aTag); lastTag.className = 'nav-next'; ulTag.insertBefore(lastTag, ulTag.lastElementChild); } Array.prototype.forEach.call(ulTag.children, function(currentValue) { if (currentValue.firstChild.firstChild.textContent !== 'Last') { currentValue.style.marginRight = '0.5em'; } }); }; navs = document.getElementsByClassName('main-nav'); addButtons(navs[0]); addButtons(navs[1]); Array.prototype.forEach.call(document.getElementsByTagName('img'), function(currentValue) { if (currentValue.hasAttribute('title')) { if (border) { currentValue.style.border = '2px solid rgba(127, 127, 127, 0.22)'; } if (titleText) { currentValue.style.marginTop = currentValue.style.paddingTop; currentValue.style.marginBottom = 0; var oldPadding = currentValue.style.paddingBottom; currentValue.style.paddingTop = 0; currentValue.style.paddingBottom = 0; var title = document.createElement('p'); title.appendChild(document.createTextNode(currentValue.title)); title.style.textAlign = 'center'; title.style.paddingLeft = '5em'; title.style.paddingRight = '5em'; title.style.paddingTop = 0; title.style.paddingBottom = oldPadding; title.style.fontSize = '85%'; currentValue.parentElement.insertBefore(title, currentValue.nextSibling); currentValue.removeAttribute('title'); } } }); return; } if (window.location.pathname === '/404/' || window.location.pathname === '/404') { document.documentElement.innerHTML = "<!DOCTYPE html>\n<html>\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/s/b0dcca.css\" title=\"Default\"/>\n<title>xkcd: Not Found</title>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"/>\n<link rel=\"shortcut icon\" href=\"/s/919f27.ico\" type=\"image/x-icon\"/>\n<link rel=\"icon\" href=\"/s/919f27.ico\" type=\"image/x-icon\"/>\n<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Atom 1.0\" href=\"/atom.xml\"/>\n<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS 2.0\" href=\"/rss.xml\"/>\n<script>\n(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\nm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\nga('create', 'UA-25700708-7', 'auto');\nga('send', 'pageview');\n</script>\n<script type=\"text/javascript\" src=\"//xkcd.com/1350/jquery.min.js\"></script>\n<script type=\"text/javascript\" src=\"//xkcd.com/static/json2.js\"></script>\n\n</head>\n<body>\n<div id=\"topContainer\">\n<div id=\"topLeft\">\n<ul>\n<li><a href=\"/archive\">Archive</a></li>\n<li><a href=\"http://what-if.xkcd.com\">What If?</a></li>\n<li><a href=\"http://blag.xkcd.com\">Blag</a></li>\n<li><a href=\"http://store.xkcd.com/\">Store</a></li>\n<li><a rel=\"author\" href=\"/about\">About</a></li>\n</ul>\n</div>\n<div id=\"topRight\">\n<div id=\"masthead\">\n<span><a href=\"/\"><img src=\"//imgs.xkcd.com/static/terrible_small_logo.png\" alt=\"xkcd.com logo\" height=\"83\" width=\"185\"/></a></span>\n<span id=\"slogan\">A webcomic of romance,<br/> sarcasm, math, and language.</span>\n</div>\n<div id=\"news\">\nxkcd updates every Monday, Wednesday, and Friday.\n<script>\nmu = window.location.href.split(\"#\")[1]\nif(/([0-9a-b]+-)[4][0-9a-b]+/.test(mu)) { window.location.href = \"http://xkcd.com/1663/#\"+mu }\n</script>\n\n\n</div>\n</div>\n<div id=\"bgLeft\" class=\"bg box\"></div>\n<div id=\"bgRight\" class=\"bg box\"></div>\n</div>\n<div id=\"middleContainer\" class=\"box\">\n\n<div id=\"ctitle\">Not Found</div>\n<ul class=\"comicNav\">\n<li><a href=\"/1/\">|<</a></li>\n<li><a rel=\"prev\" href=\"/403/\" accesskey=\"p\">< Prev</a></li>\n<li><a href=\"//c.xkcd.com/random/comic/\">Random</a></li>\n<li><a rel=\"next\" href=\"/405/\" accesskey=\"n\">Next ></a></li>\n<li><a href=\"/\">>|</a></li>\n</ul>\n<div id=\"comic\">\n<iframe title=\"April Fools! (This page was created by xkcd tweaks. It would normally be a HTTP 404 error page.)\" style=\"border: 1px solid gray; outline: 1px solid black; margin-top: 1px; width: 296px; height: 296px;\" src=\"/404\" height=\"296\" width=\"296\"><h1 style=\"text-align: left; font-size: 2em; font-variant: normal; font-family: Times New Roman; font-weight: bold;\">404 - Not Found</h1></iframe><div style=\"width: 300px; height: 300px; position: absolute; left: 240px; margin-top: -299px;\" title=\"April Fools! (This page was created by xkcd tweaks. It would normally be a HTTP 404 error page.)\"></div>\n</div>\n<ul class=\"comicNav\">\n<li><a href=\"/1/\">|<</a></li>\n<li><a rel=\"prev\" href=\"/403/\" accesskey=\"p\">< Prev</a></li>\n<li><a href=\"//c.xkcd.com/random/comic/\">Random</a></li>\n<li><a rel=\"next\" href=\"/405/\" accesskey=\"n\">Next ></a></li>\n<li><a href=\"/\">>|</a></li>\n</ul>\n<br />\nPermanent link to this comic: http://xkcd.com/404/<br />\nImage URL (for hotlinking/embedding): http://imgs.xkcd.com/comics/\n<div id=\"transcript\" style=\"display: none\">[[A couple sit at the small table of a cafe. The woman holds up a graph.]]\nWoman: We're a terrible match. But if we sleep together, it'll make the local hookup network a symmetric graph.\nMan: I can't argue with that.\n{{Title text: Check it out; I've had sex with someone who's had sex with someone who's written a paper with Paul Erd\xC5\x91s!}}</div>\n</div>\n<div id=\"bottom\" class=\"box\">\n<img src=\"//imgs.xkcd.com/s/a899e84.jpg\" width=\"520\" height=\"100\" alt=\"Selected Comics\" usemap=\"#comicmap\"/>\n<map id=\"comicmap\" name=\"comicmap\">\n<area shape=\"rect\" coords=\"0,0,100,100\" href=\"/150/\" alt=\"Grownups\"/>\n<area shape=\"rect\" coords=\"104,0,204,100\" href=\"/730/\" alt=\"Circuit Diagram\"/>\n<area shape=\"rect\" coords=\"208,0,308,100\" href=\"/162/\" alt=\"Angular Momentum\"/>\n<area shape=\"rect\" coords=\"312,0,412,100\" href=\"/688/\" alt=\"Self-Description\"/>\n<area shape=\"rect\" coords=\"416,0,520,100\" href=\"/556/\" alt=\"Alternative Energy Revolution\"/>\n</map>\n<div>\n<!--\nSearch comic titles and transcripts:\n<script type=\"text/javascript\" src=\"//www.google.com/jsapi\"></script>\n<script type=\"text/javascript\">google.load('search', '1');google.setOnLoadCallback(function() {google.search.CustomSearchControl.attachAutoCompletion('012652707207066138651:zudjtuwe28q',document.getElementById('q'),'cse-search-box');});</script>\n<form action=\"//www.google.com/cse\" id=\"cse-search-box\">\n<div>\n<input type=\"hidden\" name=\"cx\" value=\"012652707207066138651:zudjtuwe28q\"/>\n<input type=\"hidden\" name=\"ie\" value=\"UTF-8\"/>\n<input type=\"text\" name=\"q\" id=\"q\" size=\"31\"/>\n<input type=\"submit\" name=\"sa\" value=\"Search\"/>\n</div>\n</form>\n<script type=\"text/javascript\" src=\"//www.google.com/cse/brand?form=cse-search-box&lang=en\"></script>\n-->\n<a href=\"/rss.xml\">RSS Feed</a> - <a href=\"/atom.xml\">Atom Feed</a>\n</div>\n<br />\n<div id=\"comicLinks\">\nComics I enjoy:<br/>\n <a href=\"http://threewordphrase.com/\">Three Word Phrase</a>,\n <a href=\"http://www.smbc-comics.com/\">SMBC</a>,\n <a href=\"http://www.qwantz.com\">Dinosaur Comics</a>,\n <a href=\"http://oglaf.com/\">Oglaf</a> (nsfw),\n <a href=\"http://www.asofterworld.com\">A Softer World</a>,\n <a href=\"http://buttersafe.com/\">Buttersafe</a>,\n <a href=\"http://pbfcomics.com/\">Perry Bible Fellowship</a>,\n <a href=\"http://questionablecontent.net/\">Questionable Content</a>,\n <a href=\"http://www.buttercupfestival.com/\">Buttercup Festival</a>,\n <a href=\"http://www.mspaintadventures.com/?s=6&p=001901\">Homestuck</a>,\n\t<a href=\"http://www.jspowerhour.com/\">Junior Scientist Power Hour</a>\n</div>\n<p>Warning: this comic occasionally contains strong language (which may be unsuitable for children), unusual humor (which may be unsuitable for adults), and advanced mathematics (which may be unsuitable for liberal-arts majors).</p>\n<div id=\"footnote\">BTC 1FhCLQK2ZXtCUQDtG98p6fVH7S6mxAsEey<br />We did not invent the algorithm. The algorithm consistently finds Jesus. The algorithm killed Jeeves. <br/>The algorithm is banned in China. The algorithm is from Jersey. The algorithm constantly finds Jesus.<br/>This is not the algorithm. This is close.</div>\n<div id=\"licenseText\">\n<p>\nThis work is licensed under a\n<a href=\"http://creativecommons.org/licenses/by-nc/2.5/\">Creative Commons Attribution-NonCommercial 2.5 License</a>.\n</p><p>\nThis means you're free to copy and share these comics (but not to sell them). <a rel=\"license\" href=\"/license.html\">More details</a>.</p>\n</div>\n</div>\n</body>\n<!-- Layout by Ian Clasbey, davean, and chromakode -->\n</html>\n\n"; } var comic = document.getElementById('comic'), title = document.createElement('p'), permaLinkTag = document.createElement('a'), previousButtons, nextButtons, intervalId, getTop, nav, link, oldNav, titleContent, permaLink, imgLink, imgLinkTag; first = last = false; if (!comic) { return; } if (snap) { getTop = function() { return document.getElementById('middleContainer').offsetTop + 6; }; var tmp = document.createElement('style'); tmp.innerHTML = "a,body{text-decoration:none}#topLeft a:hover,a:hover{text-decoration:underline}#topLeft,#topRight{text-align:left;position:relative}#comicLinks,#licenseText,#masthead{display:block}#footnote,body{font-variant:small-caps}body{background-color:#96A8C8;text-align:center;font-size:16px;font-family:Lucida,Helvetica,sans-serif;font-weight:500;position:absolute;left:50%;width:780px;margin-left:-390px}#ctitle,#slogan,#topLeft a,a{font-weight:800}a{color:#96A8C8}img{border:0}.box{background:#fff;border-style:solid;border-width:1.5px;border-color:#071419;border-radius:12px;-moz-border-radius:12px}#topContainer{width:780px;position:relative;overflow:hidden}#topLeft{width:166px;float:left;padding:17px}#topLeft ul{margin:0;list-style-type:none}#topLeft a{color:#282B30;font-size:21px}#bgLeft{float:left;left:0;width:200px;bottom:0;top:0}#topRight{width:560px;padding-top:15px;padding-bottom:15px;padding-left:15px;float:right;line-height:150%}#slogan{padding:20px;display:inline-block;font-size:20px;font-style:italic;line-height:120%;vertical-align:top}#bgRight{right:0;float:right;width:572px;bottom:0;top:0}.bg{position:absolute;z-index:-1}#middleContainer{width:780px;margin:5px auto;padding:10px 0}#ctitle{margin:10px;font-size:21px}ul.comicNav{padding:0;list-style-type:none}ul.comicNav li{display:inline}ul.comicNav li a{background-color:#6E7B91;color:#FFF;border:1.5px solid #333;font-size:16px;font-weight:600;padding:1.5px 12px;margin:0 4px;text-decoration:none;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:0 0 5px 0 gray;-moz-box-shadow:0 0 5px 0 gray;-webkit-box-shadow:0 0 5px 0 gray}#footnote,.comicInfo{font-style:italic;font-weight:800}#comic table,#comicLinks{margin:auto}ul.comicNav a:focus,ul.comicNav a:hover{background-color:#FFF;color:#6E7B91;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}.comicInfo{font-size:12px}#bottom{margin-top:5px;padding:25px 15px;width:750px}#comicLinks{width:300px}#footnote{clear:both;font-size:6px;margin:0;padding:0}#licenseText{margin:auto;width:410px}#transcript{display:none}#middleContainer{position:relative;left:50%;margin-left:-390px}#comic .comic,#comic .cover,#comic .panel,#comic .panel img{position:absolute}#comic .cover{z-index:10}@font-face{font-family:xkcd-Regular;src:url(//xkcd.com/fonts/xkcd-Regular.eot?) format('eot'),url(//xkcd.com/fonts/xkcd-Regular.otf) format('opentype')}"; document.body.appendChild(tmp); window.scrollTo(0, getTop()); document.body.removeChild(tmp); window.addEventListener('scroll', function() { var scrollPosition = document.documentElement.scrollTop || document.body.scrollTop, top_ = getTop(); if (scrollPosition > top_ - 145 && top_ + 10 > scrollPosition) { if (intervalId === false && scrollPosition !== top_) { intervalId = setInterval(function() { if (scrollPosition > top_ - 145 && top_ + 10 > scrollPosition) { window.scrollTo(0, top_); } clearInterval(intervalId); intervalId = false; }, 500); } } else { clearInterval(intervalId); intervalId = false; } }); } imgLink = document.getElementById('transcript').previousSibling; permaLink = imgLink.previousSibling.previousSibling; permaLinkTag.href = permaLink.textContent.slice(31).replace('http://', 'https://'); permaLinkTag.style.fontWeight = 'initial'; permaLinkTag.appendChild(document.createTextNode(permaLink.textContent.slice(31).replace('http://', 'https://'))); permaLink.textContent = permaLink.textContent.slice(1, 31); permaLink.parentElement.insertBefore(permaLinkTag, permaLink.nextSibling); if (/comics\/\s*$/.test(imgLink.textContent)) { imgLink.parentElement.insertBefore(document.createElement('br'), imgLink); imgLink.parentElement.removeChild(imgLink); } else { imgLinkTag = document.createElement('a'); imgLinkTag.style.fontWeight = 'initial'; imgLinkTag.href = imgLink.textContent.slice(39, -1).replace('http://', 'https://'); imgLinkTag.appendChild(document.createTextNode(imgLink.textContent.slice(39, -1).replace('http://', 'https://'))); imgLink.textContent = imgLink.textContent.slice(1, 39); imgLink.parentElement.insertBefore(imgLinkTag, imgLink.nextSibling); } repeat(100, function() { nextButtons = Array.prototype.slice.call(document.querySelectorAll('[rel="next"], [href="/"]'), 1); previousButtons = document.querySelectorAll('[rel="prev"], [href="/1/"]'); return nextButtons.length === 4 && previousButtons.length === 4; }, function() { if (previousButtons[1].getAttribute('href') === '#') { number = 1; first = true; repeat(100, disable(previousButtons)); } else { number = +previousButtons[1].getAttribute('href').slice(1, -1) + 1; if (number === 404) { if (document.getElementById('ctitle').firstChild.textContent === 'Journal 3') { number++; previousButtons[1].href = '/404/'; previousButtons[3].href = '/404/'; } else { nextButtons[0].href = '/405/'; nextButtons[2].href = '/405/'; } } else if (number === 403) { nextButtons[0].href = '/404/'; nextButtons[2].href = '/404/'; } else if (nextButtons[0].getAttribute('href') === '#') { last = true; repeat(100, disable(nextButtons)); document.querySelector('[href="/"]').removeAttribute('href'); } } }); repeat(1000, function() { if (comic.firstElementChild.tagName.toLowerCase() === 'script') { return false; } try { if (hr) { comic.parentElement.insertBefore(document.createElement('hr'), comic.nextSibling); comic.parentElement.insertBefore(document.createElement('hr'), comic); } if (titleText) { if (!comic.firstElementChild.hasAttribute('title')) { titleContent = comic.firstElementChild; if (!titleContent.firstElementChild.hasAttribute('title')) { return true; } titleContent = titleContent.firstElementChild; } else { if (comic.firstElementChild.nodeName.toLowerCase() === 'iframe' && 'hasAttribute' in comic.firstElementChild.nextElementSibling && comic.firstElementChild.nextElementSibling.hasAttribute('title')) { comic.firstElementChild.removeAttribute('title'); titleContent = comic.firstElementChild.nextElementSibling; } else { titleContent = comic.firstElementChild; } } title.appendChild(document.createTextNode(titleContent.title)); title.style.fontVariant = 'normal'; title.style.paddingLeft = '80px'; title.style.paddingRight = '80px'; title.style.fontSize = '20px'; comic.parentElement.insertBefore(title, comic.nextSibling); titleContent.removeAttribute('title'); } return true; } catch (e) { return true; } }); if (explainButton) { link = document.createElement('a'); link.href = 'http://www.explainxkcd.com/' + number + '/'; link.style.fontFamily = 'xkcd-Regular'; link.style.fontVariant = 'normal'; link.style.marginLeft = '5px'; link.style.display = 'inline-block'; link.style.fontSize = '20px'; link.style.padding = '0px 5px 5px'; link.appendChild(document.createTextNode('Explain!')); nav = document.createElement('ul'); nav.className = 'comicNav'; nav.style.marginBottom = 0; nav.appendChild(document.createElement('li')); nav.firstChild.appendChild(link); oldNav = document.getElementsByClassName('comicNav')[1]; oldNav.parentElement.insertBefore(nav, oldNav.nextSibling); } document.addEventListener('keydown', function(event) { if (activeIsEditable()) { return; } var keyCode = event.keyCode; if (number === 1608 && document.activeElement.id === 'explore' && (keyCode === right || keyCode === left)) { return; } if ((keyCode === right || keyCode === n) && !last) { nextButtons[0].click(); } else if ((keyCode === left || keyCode === p) && !first) { previousButtons[1].click(); } else if (keyCode === r) { document.querySelector('[href="//c.xkcd.com/random/comic/"]').click(); } }); if (transcript) { xhttp = new XMLHttpRequest(); var info; if (1662 >= number && number >= 1608) { info = '/' + (number + 2) + '/info.0.json'; } else if (/* 1677 >= number && */ number >= 1663) { info = '/' + (number + 3) + '/info.0.json'; } else { info ='info.0.json'; } xhttp.open('get', info, true); xhttp.onreadystatechange = function() { if (xhttp.readyState == XMLHttpRequest.DONE) { var response = JSON.parse(xhttp.response); if (response.transcript) { var node = document.createElement('p'); node.innerHTML = response.transcript .replace(/^\s*{{(?:title|alt)(?:[ -]text)?:[^}]*}}\s*/i, '') .replace(/\s*{{(?:title|alt)(?:[ -]text)?:[^}]+}}\s*$/i, '') .replace(/\s*{{alt text: Also, I hear the 4th root of \(9\^2 \+ 19\^2\n22\) is pi\.\s*$/, '') .replace(/&/g, '&').replace(/"/g, '"') .replace(/'/g, ''').replace(/</g, '<') .replace(/>/g, '>') .replace(/\n/g, '<br style="display: block; margin: 3px 0;">'); node.style.fontVariant = 'normal'; node.style.paddingLeft = '80px'; node.style.paddingRight = '80px'; node.style.fontSize = '14px'; node.style.textAlign = 'left'; var ul = document.getElementsByTagName('ul'); ul = ul[ul.length - 1]; var parent = ul.parentElement; ul = ul.nextSibling; if (hr) { parent.insertBefore(document.createElement('hr'), ul); } parent.insertBefore(node, ul); if (hr) { parent.insertBefore(document.createElement('hr'), ul); } } } }; xhttp.send(); } }