Greasy Fork镜像 is available in English.

SweClockers JavaScript sidladdare

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

Verze ze dne 16. 05. 2015. Zobrazit nejnovější verzi.

// ==UserScript==
// @name         SweClockers JavaScript sidladdare
// @namespace    hAPsdWxok4bTePK8JZdG
// @author       LemonIllusion
// @version      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"; // Ä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"; // Ä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.");
}
长期地址
遇到问题?请前往 GitHub 提 Issues。