Improve 4plebs Thread Page Title

Fetch and update page title using subject and body for archive.4plebs.org threads

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Improve 4plebs Thread Page Title
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Fetch and update page title using subject and body for archive.4plebs.org threads
// @author       wolffgang
// @match        *://archive.4plebs.org/*/thread/*
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const TITLE_LIMIT = 190; // Maximum title length

    function fetchThreadDetails() {
        // Dynamically fetch board name from URL
        const boardName = `/${location.pathname.split('/')[1]}/`;

        const subjectElement = document.querySelector('h2.post_title');
        const bodyElement = document.querySelector('div.text');

        let subject = subjectElement ? subjectElement.textContent.trim() : '';
        let body = bodyElement ? bodyElement.textContent.trim() : '';

        // Combine board name, subject, and body intelligently
        let newTitle = boardName;
        if (subject) {
            newTitle += ` - ${subject}`;
        }
        if (body) {
            newTitle += subject ? `: ${body}` : ` - ${body}`;
        }

        // Truncate if it exceeds TITLE_LIMIT
        if (newTitle.length > TITLE_LIMIT) {
            newTitle = newTitle.slice(0, TITLE_LIMIT - 3) + '...';
        }

        // Update the document's title
        document.title = newTitle;
    }

    // Execute the function when the page is fully loaded
    window.addEventListener('load', fetchThreadDetails);
})();