SweClockers JavaScript sidladdare

Lägger till en knapp som läser in kommande inlägg utan uppdatering av sidan.

2015-05-16 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         SweClockers JavaScript sidladdare
// @namespace    hAPsdWxok4bTePK8JZdG
// @author       LemonIllusion
// @version      1.0.3
// @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();

};

// 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 sidladdare: Det finns fler sidor att läsa in.");
    document.getElementsByClassName("forumPosts")[0].innerHTML += '<div id="jsLoadPage" class="forumPost"><div class="postHeader table"><div class="row"><div class="cell headerLink" style="text-align:center;cursor:pointer">Ladda fler</div></div></div></div>'
    document.getElementById("jsLoadPage").onclick = loadPage;
} else {
    var nextExists = false;
    document.getElementsByClassName("forumPosts")[0].innerHTML += '<div class="forumPost"><div class="postHeader table"><div class="row"><div class="cell headerLink" style="text-align:center">Det finns inga fler inlägg att ladda</div></div></div></div>'
    console.log("SweClockers JavaScript sidladdare: 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 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;
                document.getElementsByClassName("forumPosts")[0].innerHTML += '<div id="jsLoadPage" class="forumPost"><div class="postHeader table"><div class="row"><div class="cell headerLink" style="text-align:center;cursor:pointer">Ladda fler</div></div></div></div>'
                document.getElementById("jsLoadPage").onclick = loadPage;
                console.log("SweClockers JavaScript sidladdare: Det finns fler sidor att läsa in.");
            } else {
                nextExists = false;
                document.getElementsByClassName("forumPosts")[0].innerHTML += '<div class="forumPost"><div class="postHeader table"><div class="row"><div class="cell headerLink" style="text-align:center">Det finns inga fler inlägg att ladda</div></div></div></div>'
                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.");
    }
}