「MediaWiki:Common.js」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし タグ: モバイル編集 モバイルウェブ編集 |
編集の要約なし タグ: モバイル編集 モバイルウェブ編集 |
||
| 5行目: | 5行目: | ||
/****************************************************** | /****************************************************** | ||
* Timeless 対応:最近の更新ウィジェット(完全版) | * Timeless 対応:最近の更新ウィジェット(完全版) | ||
******************************************************/ | ******************************************************/ | ||
| 22行目: | 19行目: | ||
var cachedTime = localStorage.getItem(keyTime); | var cachedTime = localStorage.getItem(keyTime); | ||
if (cached && cachedTime && now - cachedTime < ttl) { | if (cached && cachedTime && now - cachedTime < ttl) { | ||
container.innerHTML = cached; | container.innerHTML = cached; | ||
| 28行目: | 24行目: | ||
} | } | ||
$.getJSON(mw.util.wikiScript('api'), { | $.getJSON(mw.util.wikiScript('api'), { | ||
action: 'query', | action: 'query', | ||
| 35行目: | 30行目: | ||
rcprop: 'title|timestamp|ids', | rcprop: 'title|timestamp|ids', | ||
rcshow: '!bot', | rcshow: '!bot', | ||
format: 'json' | format: 'json' | ||
}, function (data) { | }, function (data) { | ||
| 51行目: | 44行目: | ||
html += '</ul>'; | html += '</ul>'; | ||
localStorage.setItem(key, html); | localStorage.setItem(key, html); | ||
localStorage.setItem(keyTime, now); | localStorage.setItem(keyTime, now); | ||
| 64行目: | 56行目: | ||
if (!container) return; | if (!container) return; | ||
if (container.dataset.loaded) return; | if (container.dataset.loaded) return; | ||
container.dataset.loaded = "1"; | container.dataset.loaded = "1"; | ||
| 71行目: | 62行目: | ||
} | } | ||
// ▼ | // ▼ Timeless は DOM を後から組み替えるので監視が必須 | ||
var observer = new MutationObserver(function () { | var observer = new MutationObserver(function () { | ||
initRecentChanges(); | initRecentChanges(); | ||
2026年2月23日 (月) 05:25時点における最新版
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */
/******************************************************
* Timeless 対応:最近の更新ウィジェット(完全版)
******************************************************/
mw.loader.using(['mediawiki.util'], function () {
// ▼ 最近の更新を読み込む関数
function loadRecentChanges(container) {
var key = 'recentchanges-cache';
var keyTime = key + '-time';
var ttl = 5 * 60 * 1000; // 5分キャッシュ
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 = '<ul>';
data.query.recentchanges.forEach(function (rc) {
html += '<li>' +
'<a href="/wiki/' + rc.title + '">' + rc.title + '</a>' +
' <span style="color:#666;">(' + rc.timestamp + ')</span>' +
'</li>';
});
html += '</ul>';
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);
}
// ▼ Timeless は DOM を後から組み替えるので監視が必須
var observer = new MutationObserver(function () {
initRecentChanges();
});
observer.observe(document.body, { childList: true, subtree: true });
// 初回実行
initRecentChanges();
});