Wayback Machine Small Bug Fixes

Fixes encoded ampersands on Wayback Machine's captures graph and problems that arise when trailing slashes are missing in an URL

Verzia zo dňa 03.01.2016. Pozri najnovšiu verziu.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name          Wayback Machine Small Bug Fixes
// @namespace     DoomTay
// @description   Fixes encoded ampersands on Wayback Machine's captures graph and problems that arise when trailing slashes are missing in an URL
// @version       1.1.5
// @include       http://web.archive.org/web/*
// @include       https://web.archive.org/web/*
// @grant         none

// ==/UserScript==

var toolbarNav = document.getElementById("wm-graph-anchor");
var pics = document.images;
var lastFolder = window.location.href.substring(window.location.href.lastIndexOf("/") + 1);
var shouldHaveTrailingSlash = window.location.href.lastIndexOf(".") < window.location.href.lastIndexOf("/") || window.location.href.substring(window.location.href.lastIndexOf("//") + 2) == lastFolder;
var hasTrailingSlash = window.location.href.lastIndexOf("/") == window.location.href.length - 1;

function fixToolbar()
{
	while(toolbarNav.href.indexOf("&amp;") > -1) toolbarNav.href = toolbarNav.href.replace("&amp;","&");
}

//Fix cases of &amp; in the capture graph
if(toolbarNav) fixToolbar();

if(shouldHaveTrailingSlash && !hasTrailingSlash)
{
	if(!document.getElementsByTagName("base")[0])
	{
		var base = document.createElement("base");
		base.href = window.location.href + "/";
		document.head.appendChild(base);
	}
	for(var i = 0; i < pics.length; i++)
	{
		//Skip over stuff related to the Wayback Machine toolbar and data URIs
		if((document.getElementById("wm-ipp") && document.getElementById("wm-ipp").contains(pics[i])) || pics[i].src.indexOf("data:") > -1) continue;
		//It might be an offsite or absolute reference, which means we don't need to do anything
		//Weird hack to make sure the "revised" images will actually display
		pics[i].src = pics[i].src;
	}
}

var observer = new MutationObserver(function(mutations) {
	mutations.forEach(function(mutation) {
		if(mutation.type == "attributes" && mutation.target == toolbarNav) fixToolbar();
	});    
});

var config = { attributes: true, childList: true, characterData: true, subtree: true, attributeFilter: ["href"] };
observer.observe(toolbarNav, config);