Greasy Fork 还支持 简体中文。

Bangumi.tv Topic Comments Reversal

倒序显示讨论串

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         Bangumi.tv Topic Comments Reversal
// @namespace    https://github.com/bangumi/scripts
// @version      1.0.1
// @description  倒序显示讨论串
// @icon         https://bgm.tv/img/smiles/tv/15.gif
// @author       JarvieK
// @include      /^https?://(bgm\.tv|bangumi\.tv|chii\.in)/(subject|group)/topic/.+$/
// @encoding     utf-8
// @license      MIT
// ==/UserScript==

const COOKIE_COMMENT_REVERSAL_STATE_KEY = "cookie-comment-reversal-state";

/**
 * entrypoint
 */
(function () {
    'use strict';
    const slideContainer = $("#sliderContainer");
    const checkbox = $(`<input id="commentReversalCheckbox" type="checkbox" />`);
    checkbox.change(function () {
        const checked = this.checked;
        setState(checked);
        reverseCommentList();
    });
    const checkboxContainer = $(`<div>`).css({
        "display": "flex",
        "align-items": "center",
        "margin": "4px",
        "justify-content": "flex-end"
    })
        .append($(`<span>倒序显示</span>`).css({
            "margin": "0 4px"
        }))
        .append(checkbox);
    checkboxContainer.insertAfter(slideContainer);

    // set to stored state
    const state = getState();
    if (state) checkbox.prop('checked', state).change();
})();

/**
 * retrieve state store in cookies
 * @returns {boolean}
 */
function getState() {
    const value = $.cookie(COOKIE_COMMENT_REVERSAL_STATE_KEY);
    return value === "true";
}

/**
 * update comments to reversal order
 * update reversal settings in cookies
 *
 * @param checked {boolean}
 */
function setState(checked) {
    const value = checked ? "true" : "false";
    $.cookie(COOKIE_COMMENT_REVERSAL_STATE_KEY, value, { expires: new Date("3000-01-01T00:00:00Z") });
}

function reverseCommentList() {
    // top level comments
    const commentList = $("#comment_list");
    const comments = commentList.children();
    commentList.empty().append(comments.get().reverse());

    // sub replies
    $(".topic_sub_reply").each((_, reply) => {
        reply = $(reply);
        const subReplies = reply.children();
        reply.empty().append(subReplies.get().reverse());
    });
}