Wiki/MediaWiki:Mobile.js

提供:百科事典.com
2026年2月23日 (月) 08:49時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「→‎***************************************************** * Timeless モバイル専用:最近の更新ウィジェット *****************************************************: mw.loader.using(['mediawiki.util'], function () { function loadRecentChanges(container) { var key = 'recentchanges-cache'; var keyTime = key + '-time'; var ttl = 5 * 60 * 1000; var now = Date.now(); var cached = localStorage.getItem(key);…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動検索に移動

/******************************************************

* Timeless モバイル専用:最近の更新ウィジェット
******************************************************/

mw.loader.using(['mediawiki.util'], function () {

   function loadRecentChanges(container) {
       var key = 'recentchanges-cache';
       var keyTime = key + '-time';
       var ttl = 5 * 60 * 1000;
       var now = Date.now();
       var cached = localStorage.getItem(key);
       var cachedTime = localStorage.getItem(keyTime);
       if (cached && cachedTime && now - cachedTime < ttl) {
           container.innerHTML = cached;
           return;
       }
       $.getJSON(mw.util.wikiScript('api'), {
           action: 'query',
           list: 'recentchanges',
           rclimit: 7,
           rcprop: 'title|timestamp|ids',
           rcshow: '!bot',
           format: 'json'
       }, function (data) {

var html = '

    '; data.query.recentchanges.forEach(function (rc) { html += '
  • ' + '<a href="/' + rc.title + '">' + rc.title + '</a>' + ' (' + rc.timestamp + ')' + '
  • '; }); html += '

';

           localStorage.setItem(key, html);
           localStorage.setItem(keyTime, now);
           container.innerHTML = html;
       });
   }
   function initRecentChanges() {
       var container = document.getElementById('recentchanges-container');
       if (!container) return;
       if (container.dataset.loaded) return;
       container.dataset.loaded = "1";
       loadRecentChanges(container);
   }
   var observer = new MutationObserver(function () {
       initRecentChanges();
   });
   observer.observe(document.body, { childList: true, subtree: true });
   initRecentChanges();

});