Usuário(a):Pmartin/cache.js
Aspeto
Nota: Depois de publicar, poderá ter de contornar a cache do seu navegador para ver as alterações.
- Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
- Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
- Edge: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5.
function addcache() {
if (typeof no_external_cache !== "undefined" && no_external_cache) {
return;
}
var links = document.getElementsByClassName('external');
for (var i = 0, l = links.length; i < l; i++) {
var current_link = links[i];
var path = current_link.href;
if (path.indexOf("http://wikiwix.com/cache/") > -1 || path.indexOf("http://web.archive.org/web/") > -1 || path.indexOf("wikipedia.org") > -1 || path.indexOf("wikimedia.org") > -1 || path.indexOf("stable.toolserver.org") > -1) {
continue;
}
var element_parent = current_link.parentNode;
if (hasClass(element_parent, "noarchive")) {
continue;
}
var page_title = getTextContent(current_link);
var last = document.createElement("small");
last.className = "cachelinks";
last.appendChild(document.createTextNode("\u00a0["));
var link = document.createElement("a");
link.setAttribute("href", "http://wikiwix.com/cache/?url=" + path.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(page_title));
link.setAttribute("title", "archive of " + page_title);
link.appendChild(document.createTextNode("archive"));
last.appendChild(link);
last.appendChild(document.createTextNode("]"));
element_parent.insertBefore(last, current_link.nextSibling);
}
}
// If we're on an article page, run addcache
if (wgNamespaceNumber === 0) {
$( addcache );
}
// Retrieves the actual text content of a node and its descendant nodes
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
function getTextContent(oNode) {
if(!oNode) return null;
if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
switch (oNode.nodeType) {
case 3: // TEXT_NODE
case 4: // CDATA_SECTION_NODE
return oNode.nodeValue;
break;
case 7: // PROCESSING_INSTRUCTION_NODE
case 8: // COMMENT_NODE
if (getTextContent.caller!=getTextContent) {
return oNode.nodeValue;
}
break;
case 9: // DOCUMENT_NODE
case 10: // DOCUMENT_TYPE_NODE
case 12: // NOTATION_NODE
return null;
break;
}
var _textContent = "";
oNode = oNode.firstChild;
while (oNode) {
_textContent += getTextContent(oNode);
oNode = oNode.nextSibling;
}
return _textContent;
}