「MediaWiki:Common.js」の版間の差分
提供: 小樽のじかん事典
タグ: 取り消し |
編集の要約なし |
||
| 52行目: | 52行目: | ||
} | } | ||
} | } | ||
})(); | |||
(function () { | |||
function apply() { | |||
// Comments のDOMがまだなら何もしない | |||
var root = document.getElementById('comments-body'); | |||
if (!root) return; | |||
// 1) 並べ替えUI:option文言から親selectを特定して消す | |||
var orderTexts = ['日付順に並べ替え', '得点順に並べ替え']; | |||
var options = root.querySelectorAll('option'); | |||
for (var i = 0; i < options.length; i++) { | |||
var opt = options[i]; | |||
var t = (opt.textContent || '').trim(); | |||
if (!t) continue; | |||
var hit = false; | |||
for (var j = 0; j < orderTexts.length; j++) { | |||
if (t.indexOf(orderTexts[j]) !== -1) { | |||
hit = true; | |||
break; | |||
} | |||
} | |||
if (!hit) continue; | |||
var sel = opt.closest ? opt.closest('select') : null; | |||
if (!sel) continue; | |||
// select本体を消す | |||
sel.style.display = 'none'; | |||
// 可能なら周辺のラッパも消す(見た目の空きを減らす) | |||
var wrapper = sel.closest ? sel.closest('label, .c-sort, .c-order, .comments-sort, .comments-order, .c-nav, .c-toolbar, .comments-toolbar') : null; | |||
if (wrapper) wrapper.style.display = 'none'; | |||
} | |||
// 2) 自動更新リンク:文言一致のaを消す | |||
var links = root.querySelectorAll('a'); | |||
for (var k = 0; k < links.length; k++) { | |||
var a = links[k]; | |||
var at = (a.textContent || '').trim(); | |||
if (at.indexOf('コメントの自動更新を有効化') !== -1) { | |||
a.style.display = 'none'; | |||
// 可能なら周辺のラッパも消す | |||
var aw = a.closest ? a.closest('li, div, span, label') : null; | |||
if (aw) aw.style.display = 'none'; | |||
} | |||
} | |||
} | |||
function boot() { | |||
apply(); | |||
// Commentsが後からDOMを描画するので監視して再適用 | |||
var watchRoot = document.getElementById('comments-body') || document.getElementById('mw-data-after-content') || document.body; | |||
if (watchRoot && window.MutationObserver) { | |||
var obs = new MutationObserver(function () { apply(); }); | |||
obs.observe(watchRoot, { childList: true, subtree: true }); | |||
} | |||
} | |||
// RLQ優先、なければDOMContentLoaded | |||
if (window.RLQ && typeof window.RLQ.push === 'function') { | |||
window.RLQ.push(boot); | |||
} else if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', boot); | |||
} else { | |||
boot(); | |||
} | |||
})(); | })(); | ||
2026年1月8日 (木) 09:10時点における版
/**
* MediaWiki 1.44.3 アカウント作成画面 無限ループ防止版
* 既に書き換え済みの場合は処理をスキップするように修正しました。
*/
(function() {
var enforce = function() {
if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;
// 1. メールアドレスの書き換え
var labels = document.getElementsByTagName('label');
for (var i = 0; i < labels.length; i++) {
var label = labels[i];
// 「(省略可能)」が含まれている場合のみ書き換える(無限ループ防止)
if (label.getAttribute('for') === 'wpEmail' || label.innerHTML.indexOf('メールアドレス') !== -1) {
if (label.innerHTML.indexOf('(省略可能)') !== -1) {
label.innerHTML = 'メールアドレス';
}
}
// 本名の書き換え
if (label.getAttribute('for') === 'wpRealName' || label.innerHTML.indexOf('HN') !== -1) {
if (label.innerHTML.indexOf('(省略可能)') !== -1) {
label.innerHTML = 'HN(省略可能)';
}
}
}
// 2. 必須属性の付与
var emailInput = document.getElementById('wpEmail');
if (emailInput && !emailInput.required) {
emailInput.required = true;
emailInput.setAttribute('required', 'required');
}
};
if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
// 初回実行
enforce();
// 監視対象を限定し、無限ループを回避
var observer = new MutationObserver(function(mutations) {
for (var i = 0; i < mutations.length; i++) {
if (mutations[i].addedNodes.length > 0) {
enforce();
break;
}
}
});
var target = document.getElementById('mw-content-text');
if (target) {
observer.observe(target, {childList: true, subtree: true});
}
}
})();
(function () {
function apply() {
// Comments のDOMがまだなら何もしない
var root = document.getElementById('comments-body');
if (!root) return;
// 1) 並べ替えUI:option文言から親selectを特定して消す
var orderTexts = ['日付順に並べ替え', '得点順に並べ替え'];
var options = root.querySelectorAll('option');
for (var i = 0; i < options.length; i++) {
var opt = options[i];
var t = (opt.textContent || '').trim();
if (!t) continue;
var hit = false;
for (var j = 0; j < orderTexts.length; j++) {
if (t.indexOf(orderTexts[j]) !== -1) {
hit = true;
break;
}
}
if (!hit) continue;
var sel = opt.closest ? opt.closest('select') : null;
if (!sel) continue;
// select本体を消す
sel.style.display = 'none';
// 可能なら周辺のラッパも消す(見た目の空きを減らす)
var wrapper = sel.closest ? sel.closest('label, .c-sort, .c-order, .comments-sort, .comments-order, .c-nav, .c-toolbar, .comments-toolbar') : null;
if (wrapper) wrapper.style.display = 'none';
}
// 2) 自動更新リンク:文言一致のaを消す
var links = root.querySelectorAll('a');
for (var k = 0; k < links.length; k++) {
var a = links[k];
var at = (a.textContent || '').trim();
if (at.indexOf('コメントの自動更新を有効化') !== -1) {
a.style.display = 'none';
// 可能なら周辺のラッパも消す
var aw = a.closest ? a.closest('li, div, span, label') : null;
if (aw) aw.style.display = 'none';
}
}
}
function boot() {
apply();
// Commentsが後からDOMを描画するので監視して再適用
var watchRoot = document.getElementById('comments-body') || document.getElementById('mw-data-after-content') || document.body;
if (watchRoot && window.MutationObserver) {
var obs = new MutationObserver(function () { apply(); });
obs.observe(watchRoot, { childList: true, subtree: true });
}
}
// RLQ優先、なければDOMContentLoaded
if (window.RLQ && typeof window.RLQ.push === 'function') {
window.RLQ.push(boot);
} else if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', boot);
} else {
boot();
}
})();