// ==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. // @downloadURL none // ==/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 = '