// ==UserScript==
// @name SweClockers JavaScript sidladdare
// @namespace hAPsdWxok4bTePK8JZdG
// @author LemonIllusion
// @version 1.0
// @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();
};
// Kolla om det finns fler sidor
if (document.getElementsByClassName("next-page")[0] !== undefined) {
var nextExists = true;
var nextURL = document.getElementsByClassName("next-page")[0].href;
console.log("SweClockers JavaScript page loader: Det finns fler sidor att läsa in.");
document.getElementsByClassName("forumPosts")[0].innerHTML += '
'
document.getElementById("jsLoadPage").onclick = loadPage;
} else {
var nextExists = false;
console.log("SweClockers JavaScript page loader: Det finns inga fler sidor att läsa in.");
}
function loadPage () {
if (nextExists) { // Om det finns fler sidor
document.getElementById("jsLoadPage").getElementsByClassName("cell")[0].style.cssText = "text-align:center";
document.getElementById("jsLoadPage").getElementsByClassName("cell")[0].innerHTML = "Laddar...";
document.getElementById("jsLoadPage").onclick = "";
getHTML( nextURL, function (response) {
document.getElementById("jsLoadPage").parentNode.removeChild(document.getElementById("jsLoadPage"));
document.getElementsByClassName("forumPosts")[0].innerHTML += response.getElementsByClassName("forumPosts")[0].innerHTML; // Lägg till posts från nästa sida
console.log("SweClockers JavaScript page loader: 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;
document.getElementsByClassName("forumPosts")[0].innerHTML += ''
document.getElementById("jsLoadPage").onclick = loadPage;
console.log("SweClockers JavaScript page loader: Det finns fler sidor att läsa in.");
} else {
nextExists = false;
document.getElementsByClassName("forumPosts")[0].innerHTML += ''
console.log("SweClockers JavaScript page loader: Det finns inga fler sidor att läsa in.");
}
});
} else {
console.log("SweClockers JavaScript page loader: Sista sidan har redan laddats.");
}
}