您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A script that I create to better navigate writing archived
// ==UserScript== // @name Writing.com's Archive Navigation Enhancement // @version 22 // @description A script that I create to better navigate writing archived // @include http*://web.archive.org/web/*writing.com* // @include http*://web.archive.org/web/*writingbk* // @include http*://web.archive.org/web/*writingbackupproject* // @include http*://web.archive.org/web/*writingbackup.000webhostapp* // @namespace https://greasyfork.org/users/218817 // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js // @grant GM_addStyle // ==/UserScript== /////block warning messages///// addJS_Node (null, null, overrideSelectNativeJS_Functions); function overrideSelectNativeJS_Functions () { window.alert = function alert (message) { console.log (message); } } function addJS_Node (text, s_URL, funcToRun) { var D = document; var scriptNode = D.createElement ('script'); scriptNode.type = "text/javascript"; if (text) scriptNode.textContent = text; if (s_URL) scriptNode.src = s_URL; if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()'; var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement; targ.appendChild (scriptNode); } //block annoying pops up (function(){ /* PREFERENCE OPTIONS */ var remove_href_popups = "true"; // <a href="javascript:window.open .... var remove_event_popups = "true"; // <a href="#" onclick="window.open .... var remove_target_popups = "true"; // <a .... target="_blank" var remove_script_popups = "true"; // all "in-page" script pop-ups - MAY BREAK LINK var nullify_all = "true"; // nullifies open in all scripts (external too) - MAY BREAK LINK var form_targets = "true"; // for <form .. target="_blank" /* END OF PREFERENCE OPTIONS */ var allLinks, thisLink, L_att_vals, L_attr; var allScriptTags, target_string; var allForms, thisForm, F_att_vals, F_attr; var expression = /(.)*(window\.open\([\'|\"])(https?\:\/\/)?(www\.)?([-_A-Z0-9\/\.]+[^#|?|\'|\"|\s])*/gi; allLinks = document.evaluate( '//a', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); for (var i = 0; i < allLinks.snapshotLength; i++) { thisLink = allLinks.snapshotItem(i); L_att_vals = thisLink.attributes; for (var j = 0; j < L_att_vals.length; j++) { L_attr = L_att_vals[j].value; if((L_att_vals[j].name == "href") && L_attr.match(expression) && (remove_href_popups == "true")) { thisLink.setAttribute("href", RegExp.$3 + RegExp.$4 + RegExp.$5); } if((L_att_vals[j].name != "href") && L_attr.match(expression) && (remove_event_popups == "true")) { thisLink.setAttribute("href", RegExp.$3 + RegExp.$4 + RegExp.$5); thisLink.setAttribute(L_att_vals[j].name, ""); } if((L_att_vals[j].name == "target") && L_attr.match(/_blank/gi) && (remove_target_popups == "true")) { thisLink.setAttribute(L_att_vals[j].name, "_self"); } } } if(remove_script_popups == "true") { allScriptTags = document.evaluate( '//script', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); for (var k = 0; k < allScriptTags.snapshotLength; k++) { target_string = allScriptTags.snapshotItem(k).innerHTML; if(target_string.match(/window\.open/gi)) { target_string = target_string.replace(/window\.open/gi, ""); var new_script_tag = document.createElement('script'); new_script_tag.setAttribute("type","text/javascript"); new_script_tag.innerHTML = target_string; document.body.appendChild(new_script_tag); } } } if(nullify_all == "true") { var nulling_script_tag = document.createElement('script'); nulling_script_tag.setAttribute("type","text/javascript"); nulling_script_tag.innerHTML = "open = null;" document.body.appendChild(nulling_script_tag); } if(form_targets == "true") { allForms = document.evaluate( '//form', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); for (var m = 0; m < allForms.snapshotLength; m++) { thisForm = allForms.snapshotItem(m); F_att_vals = thisForm.attributes; for (var n = 0; n < F_att_vals.length; n++) { F_attr = F_att_vals[n].value; if((F_att_vals[n].name == "target") && F_attr.match(/_blank/gi)) { thisForm.setAttribute(F_att_vals[n].name, "_self"); } } } } })(); /////block media fastclick bullshit///// var linkList = document.querySelectorAll ("a"); Array.prototype.forEach.call (linkList, function (link) { if (link.hostname.includes("fastclick") || link.hostname.includes("media.fastclick")) { //-- Block the link link.src = "javascript:void(0)"; link.style = "text-decoration: none;background: #f3f315;"; } } ); var linkList = document.querySelectorAll ("a"); Array.prototype.forEach.call (linkList, function (link) { if (link.hostname.includes("_static") || link.hostname.includes("_static")) { //-- Block the link link.src = "javascript:void(0)"; link.style = "text-decoration: none;background: #f3f315;"; } } ); //Prevents Adblock Redirect and annoyances window.onload = function() { var d = document; // shorthand var scripts = d.getElementsByTagName('script'); for(var i = 0; i < scripts.count; i++) { if(scripts[i].src.indexOf('dataStore.js') != -1) { scripts[i].src = ''; } } } window.onload = function() { var d = document; // shorthand var scripts = d.getElementsByTagName('script'); for(var i = 0; i < scripts.count; i++) { if(scripts[i].src.indexOf('is.js') != -1) { scripts[i].src = ''; } } } window.onload = function() { var d = document; // shorthand var scripts = d.getElementsByTagName('script'); for(var i = 0; i < scripts.count; i++) { if(scripts[i].src.indexOf('optionsadvert.js') != -1) { scripts[i].src = ''; } } } /////block images and bullshit///// var style = "text-align: right;position: fixed;z-index:9999999;bottom: 0;width: auto;right: 1%;cursor: pointer;line-height: 0;display:block !important;"; var elems = document.getElementsByTagName('div'); for (var i = 0; i < elems.length; i++) { if(elems[i].getAttribute('style') == style) { elems[i].style.display = 'none'; } } var images = document.getElementsByTagName ("img"); var x=0; while(x<images.length) { if(images[x].src == "http://web.archive.org/web/20190713212940im_/https://i.imgur.com/MY7IEW1.gif") { images[x].src = "https://web.archive.org/web/20190714031110/https://i.imgur.com/S3jkJhG.gif"; } x=x+1; } /////fix link redirection problem///// var links,thisLink; links = document.evaluate("//a[@href]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i=0;i<links.snapshotLength;i++) { var thisLink = links.snapshotItem(i); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/(.*)https://www.writing.com/main/redirect(.*)&redirect_url=(.*?)'), 'http://web.archive.org/web/$4'); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/(.*)/item_id/(.*?)-(.*)\/action\/outline'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/(.*)/item_id/(.*?)\/action\/outline'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); } /////change all links from pages "chapter_edit/view/chapter_map" to "chapter_edit/view/chapter_map"///// if (/\/chapter_edit\/view\/chapter_map/.test (location.pathname) ) { var qLinks = document.querySelectorAll ("a[href*='map']"); for (var J = qLinks.length - 1; J >= 0; --J) { var oldHref = qLinks[J].getAttribute ('href'); var newHref = oldHref.replace (/\map/, "chapter_edit/view/chapter_map"); //console.log (oldHref + "\n" + newHref); qLinks[J].setAttribute ('href', newHref); } } /////change all links from pages "action/view/chapter_map" to "action/view/chapter_map"///// else if (/\/action\/view\/chapter_map/.test (location.pathname) ) { var qLinks = document.querySelectorAll ("a[href*='map']"); for (var J = qLinks.length - 1; J >= 0; --J) { var oldHref = qLinks[J].getAttribute ('href'); var newHref = oldHref.replace (/\map/, "action/view/chapter_map"); //console.log (oldHref + "\n" + newHref); qLinks[J].setAttribute ('href', newHref); } } /////change all links from pages "edit/view/chapter_map" to "edit/view/chapter_map"///// if (/\/edit\/view\/chapter_map/.test (location.pathname) ) { var qLinks = document.querySelectorAll ("a[href*='map']"); for (var J = qLinks.length - 1; J >= 0; --J) { var oldHref = qLinks[J].getAttribute ('href'); var newHref = oldHref.replace (/\map/, "edit/view/chapter_map"); //console.log (oldHref + "\n" + newHref); qLinks[J].setAttribute ('href', newHref); } } /////if page URL does not contain "/chapter_map/" or "/cid/" redirect to index instead first chapter when viewing page synopsis///// if(document.URL.indexOf("/cid/") == -1) if(document.URL.indexOf("/map/") == -1) if(document.URL.indexOf("/chapter_map/") == -1) { var links,thisLink; links = document.evaluate("//a[@href]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); for (var i=0;i<links.snapshotLength;i++) { var thisLink = links.snapshotItem(i); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/200(.*)/item_id/(.*?)-(.*)\/map/1'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/201[0-7](.*)/item_id/(.*?)-(.*)\/map/1'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/201[8-9](.*)/item_id/(.*?)-(.*)\/map/1'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); thisLink.href = thisLink.href.replace(RegExp('http(.*)://web.archive.org/web/20[2-9](.*)/item_id/(.*?)-(.*)\/map/1'), 'https://archive.org/download/stories_files/stories.zip/$3.html'); } } /////redirect "/action/view/" not founded pages to "/edit/view/" founded pages and vice-versa///// if (/The Wayback Machine has not archived that URL/i.test (document.body.innerHTML) ) { if (/\/action\/view\/chapter_map/.test (location.pathname) ) { //alert ("This page is being redirect, please wait!"); window.location = document.URL.replace("/action/view/","/edit/view/") } } if (/The Wayback Machine has not archived that URL/i.test (document.body.innerHTML) ) { if (/\/edit\/view\/chapter_map/.test (location.pathname) ) { //alert ("This page is being redirect, please wait!"); window.location = document.URL.replace("/edit/view/","/action/view/") } } ////adds redirect to "outline" on writingbackupproject archived pages//// if (/writingbackupproject/.test (location.pathname) ) if(document.URL.indexOf("outline.html") == -1) { $("body").append ( ' \ <div id="gmRightSideBar"><a href="outline.html">Outline</a></div>\ ' ); GM_addStyle ( " \ #gmRightSideBar { \ text-align: center; \ position: relative; \ top: 60; \ font-family: sans-serif; \ background: white; \ padding: 5px 10px; \ width: 60%; \ border: 5px solid black; \ border-top: 0px; \ height: 10%; \ margin: auto; \ } \ " ); } /////hide pop up///// Array.from( document.querySelectorAll('div.test') ) .filter( node => /\b(Handtekening|Thuis)\b/i.test(node.textContent) ) .forEach( node => node.style.display = 'none' ); /////fix font problems that happens during archive///// (function() {var css = [ "#Top_Half_Page_Wrapper_Inner {", " font-size: 13px!important;", "}", "", ".norm {", " font-size: 13px!important;", "}", "", "", ".sblueroll {", " font-size: 13px!important;", "}", "", ".skinLinks {", " font-size: 13px!important;", "}" ].join("\n"); if (typeof GM_addStyle != "undefined") { GM_addStyle(css); } else if (typeof PRO_addStyle != "undefined") { PRO_addStyle(css); } else if (typeof addStyle != "undefined") { addStyle(css); } else { var node = document.createElement("style"); node.type = "text/css"; node.appendChild(document.createTextNode(css)); var heads = document.getElementsByTagName("head"); if (heads.length > 0) { heads[0].appendChild(node); } else { // no head yet, stick it whereever document.documentElement.appendChild(node); } } })();