MediaWiki:Common.js

提供:百科事典.com
2026年2月20日 (金) 13:02時点におけるAdmin (トーク | 投稿記録)による版 (005)
ナビゲーションに移動検索に移動

注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
  • Opera: Ctrl-F5を押してください
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */




/* ============================================================
   メインページに「最近の更新(7件)」を表示するスクリプト
   - タイトルのみ(差分リンクなし)
   - localStorage による5分キャッシュ
   - API の maxage/smaxage による HTTP キャッシュ
   - MediaWiki 1.39.3 で動作確認済み(ES5対応版)
   ============================================================ */

$(function () {

    // ▼ メインページ名の判定(あなたの wiki は「メインページ」)
    var page = mw.config.get('wgPageName');
    if (page !== 'メインページ' && page !== 'Main_Page') {
        return; // メインページ以外では実行しない
    }

    // ▼ localStorage 用のキー
    var key = 'recentchanges-cache';
    var keyTime = key + '-time';

    // ▼ キャッシュの有効期限(ミリ秒)→ 5分
    var ttl = 5 * 60 * 1000;
    var now = Date.now();

    // ▼ localStorage にキャッシュがあれば利用
    var cached = localStorage.getItem(key);
    var cachedTime = localStorage.getItem(keyTime);

    if (cached && cachedTime && now - cachedTime < ttl) {
        $('#recentchanges-container').html(cached);
        return; // API を叩かず終了
    }

    // ▼ MediaWiki API を呼び出して最近の更新を取得
    $.getJSON(mw.util.wikiScript('api'), {
        action: 'query',
        list: 'recentchanges',
        rclimit: 7,                     // 取得件数
        rcprop: 'title|timestamp|ids',  // タイトル・時刻・差分ID
        rcshow: '!bot',                 // Bot 編集を除外(不要なら削除)
        format: 'json',

        // ▼ HTTP キャッシュ(ブラウザ・CDN)
        maxage: 300,   // ブラウザキャッシュ 5分
        smaxage: 300   // CDNキャッシュ 5分
    }, function (data) {

        var html = '<ul>';

        data.query.recentchanges.forEach(function (rc) {

            // ▼ リスト項目の HTML(差分リンクなし)
            html +=
                '<li>' +
                    '<a href="/wiki/' + rc.title + '">' + rc.title + '</a>' +
                    '&nbsp;' +
                    '(' + rc.timestamp + ')' +
                '</li>';
        });

        html += '</ul>';

        // ▼ localStorage にキャッシュ保存
        localStorage.setItem(key, html);
        localStorage.setItem(keyTime, now);

        // ▼ メインページに表示
        $('#recentchanges-container').html(html);
    });
});