MediaWiki:Gadget-Purge.js

SaoMikoto留言 | 贡献2025年9月14日 (日) 08:14的版本 (引自萌娘百科,无需二次确认 // Edit via InPageEdit)

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
"use strict";
// <pre>
$(() => {
    if (!mw.config.get("wgIsArticle")) {
        return;
    }
    const $purgeButton = (
        buttonText = wgULS("清除页面缓存", "清除頁面快取"),
        purgingText = wgULS("正在清除缓存", "正在清除快取"),
        succesText = wgULS("清除缓存成功!", "清除快取成功!"),
        failText = wgULS("清除缓存失败,点击可重试", "清除快取失敗,點選可重試", null, null, "清除快取失敗,點擊可重試"),
    ) => {
        const $statusNode = $('<span class="n-button__content" />').text(buttonText);
        const $containerNode = $('<a class="n-button purgecache" />').append($statusNode);
        let runningStatus = false;

        $containerNode.on("click", async () => {
            if (runningStatus) {
                return;
            }
            $statusNode.text(purgingText);
            $statusNode.prepend('<img src="https://vj-wiki.top/images/d/d1/Windows_10_loading.gif" style="height: 1em; margin-top: -.25em;">');
            runningStatus = true;
            const api = new mw.Api(),
                opt = {
                    action: "purge",
                    format: "json",
                    forcelinkupdate: true,
                    titles: mw.config.get("wgPageName"),
                };
            try {
                await api.post(opt);
                $statusNode.text(succesText);
                setTimeout(() => location.reload(location, true), 200);
            } catch {
                $statusNode.text(failText);
                // eslint-disable-next-line require-atomic-updates
                runningStatus = false;
                setTimeout(() => {
                    if (!runningStatus) {
                        $statusNode.text(buttonText);
                    }
                }, 5000);
            }
        });
        return $containerNode;
    };

    $("#p-cactions ul").append(
            $('<li class="mw-list-item mw-list-item-js" id="pt-purge" />').append($purgeButton())
    );
});
// </pre>