Greasy Fork is available in English.
Lägger till en knapp som läser in kommande inlägg utan uppdatering av sidan.
当前为
// ==UserScript==
// @name SweClockers JavaScript sidladdare
// @namespace hAPsdWxok4bTePK8JZdG
// @author LemonIllusion
// @version 1.1.1
// @match http://www.sweclockers.com/forum/trad/*
// @match http://www.sweclockers.com/forum/post/*
// @description Lägger till en knapp som läser in kommande inlägg utan uppdatering av sidan.
// ==/UserScript==
/**
* Get HTML asynchronously
* @param {String} url The URL to get HTML from
* @param {Function} callback A callback funtion. Pass in "response" variable to use returned HTML.
* Source: http://gomakethings.com/getting-html-asynchronously-from-another-page/
*/
var getHTML = function ( url, callback ) {
// Feature detection
if ( !window.XMLHttpRequest ) return;
// Create new request
var xhr = new XMLHttpRequest();
// Setup callback
xhr.onload = function() {
if ( callback && typeof( callback ) === 'function' ) {
callback( this.responseXML );
}
}
// Get the HTML
xhr.open( 'GET', url );
xhr.responseType = 'document';
xhr.send();
};
function loadPage () {
if (nextExists) { // Förutsatt att det finns fler sidor
nextButton.onclick = ""; // Förhindra att flera sidor laddas in samtidigt
nextButton.style.cssText = "margin-bottom:16px"; // Ta bort klickpekaren
nextButton.getElementsByClassName("cell")[0].innerHTML = "Laddar..."; // Ändra texten
getHTML( nextURL, function (response) { // Hämta nästa sida
document.getElementsByClassName("forumPosts")[0].innerHTML += response.getElementsByClassName("forumPosts")[0].innerHTML; // Lägg till inlägg från nästa sida
console.log("SweClockers JavaScript sidladdare: Nästa sida har lästs in");
if (response.getElementsByClassName("next-page")[0] !== undefined) { // Kolla om det finns fler sidor efter den senast inlästa
nextExists = true;
nextURL = response.getElementsByClassName("next-page")[0].href;
nextButton.getElementsByClassName("cell")[0].innerHTML = "Ladda fler inlägg"; // Ändra texten
nextButton.style.cssText = "margin-bottom:16px;cursor:pointer"; // Lägg tillbaka klickpekaren
nextButton.onclick = loadPage; // Låt funktionen köras ytterligare gånger
console.log("SweClockers JavaScript sidladdare: Det finns fler sidor att läsa in.");
} else {
nextExists = false;
nextButton.getElementsByClassName("cell")[0].innerHTML = "Det finns inga fler inlägg att ladda"; // Ändra texten
console.log("SweClockers JavaScript sidladdare: Det finns inga fler sidor att läsa in.");
}
});
} else {
console.log("SweClockers JavaScript sidladdare: Sista sidan har redan laddats.");
}
}
// Justera margin på .forumPosts så att knappen passar in bättre
document.getElementsByClassName("forumPosts")[0].style.cssText = "margin-bottom:8px";
// Skapa ruta/knapp
var nextButton = document.createElement("div");
nextButton.style.cssText = "margin-bottom:16px";
nextButton.className = "forumPost"; // Alla klasser och divar på den här raden och raden under är till för att forumets stylesheet (både vanligt och Blargmode) ska appliceras korrekt
nextButton.innerHTML = '<div class="postHeader table"><div class="row"><div class="cell headerLink" style="text-align:center"></div></div></div>';
document.getElementsByClassName("forumControls")[0].parentNode.insertBefore(nextButton, document.getElementsByClassName("forumControls")[1]); // Sätt in elementet efter alla inlägg
// Kolla om det finns fler sidor
if (document.getElementsByClassName("next-page")[0] !== undefined) { // Om knappen "Nästa" finns
var nextExists = true;
var nextURL = document.getElementsByClassName("next-page")[0].href;
console.log("SweClockers JavaScript sidladdare: Det finns fler sidor att läsa in.");
nextButton.getElementsByClassName("cell")[0].innerHTML = "Ladda fler inlägg"; // Ändra texten
nextButton.style.cssText = "margin-bottom:16px;cursor:pointer"; // Lägg till klickpekare för knappen
nextButton.onclick = loadPage; // Lägg till funktion för att ladda nästa sida
} else { // Om knappen "Nästa" inte finns
var nextExists = false; // Förhindra att funktionern över huvud taget kan köras
nextButton.getElementsByClassName("cell")[0].innerHTML = "Det finns inga fler inlägg att ladda"; // Ändra texten
console.log("SweClockers JavaScript sidladdare: Det finns inga fler sidor att läsa in.");
}