Torn ID in profile title

Shows the player ID next to their name in the profile heading for easy copy/pasting (e.g. turns "Sulsay's profile" into "Sulsay [2173590]").

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Torn ID in profile title
// @namespace    https://github.com/sulsay/torn
// @version      1.0
// @description  Shows the player ID next to their name in the profile heading for easy copy/pasting (e.g. turns "Sulsay's profile" into "Sulsay [2173590]").
// @author       Sulsay [2173590]
// @match        https://www.torn.com/profiles.php*
// ==/UserScript==

(function() {
    let originalHeadingTextContent = '';

    const heading = Array.from(document.querySelectorAll('h4')).find(h4 => {
        originalHeadingTextContent = h4.textContent.trim();
        return originalHeadingTextContent.endsWith(' Profile')
    });
    if (heading === undefined) {
        // Profile heading not found or already altered
        return;
    }

    const playerIdMatches = window.location.search.match(/XID=(\d+)/);
    if (playerIdMatches === null) {
        // Viewing profile without the XID query param
        return;
    }

    const apostrophePosition = originalHeadingTextContent.indexOf("'");
    const playerName = originalHeadingTextContent.substr(0, apostrophePosition);
    const playerId = parseInt(playerIdMatches[1], 10);

    heading.textContent = `${playerName} [${playerId}]`;
})();