MediaWiki:Common.js

提供: 小樽のじかん事典
2025年12月27日 (土) 10:52時点における管理人 (トーク | 投稿記録)による版

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

  • Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
  • Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
  • Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください。
/**
 * アカウント作成画面のラベル強制書き換えおよびバリデーション
 * MediaWiki 1.44.3 対応版
 */
(function() {
    // アカウント作成画面(Special:CreateAccount)でのみ実行
    if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
        
        var customizeAccountForm = function() {
            // 1. メールアドレスのラベル変更(省略可能を削除)
            // 複数のセレクタを用いて、確実に要素を特定します
            var $emailLabel = $('label[for="wpEmail"], #mw-createaccount-join-form label:contains("メールアドレス")');
            if ($emailLabel.length) {
                $emailLabel.text('メールアドレス');
            }
            
            // 2. 本名のラベルを「HN(省略可能)」に変更
            var $realNameLabel = $('label[for="wpRealName"], #mw-createaccount-join-form label:contains("本名")');
            if ($realNameLabel.length) {
                $realNameLabel.text('HN(省略可能)');
            }
            
            // 3. メールアドレス入力をブラウザレベルで必須にする
            var $emailInput = $('#wpEmail');
            if ($emailInput.length) {
                $emailInput.prop('required', true);
                // HTML5のバリデーションを有効化
                $emailInput.attr('aria-required', 'true');
            }
            
            // 4. アカウント作成ボタンが押された際の最終チェック
            var $submitButton = $('#wpCreateaccount');
            if ($submitButton.length) {
                $submitButton.on('click', function(e) {
                    if ($emailInput.length && !$emailInput.val()) {
                        alert('メールアドレスは必須項目です。');
                        $emailInput.focus();
                        e.preventDefault();
                        return false;
                    }
                });
            }
        };

        // DOMの構築を待って実行
        $(document).ready(function() {
            customizeAccountForm();
            // 動的な変更を監視(MutationObserver)
            if (window.MutationObserver) {
                var observer = new MutationObserver(function() {
                    customizeAccountForm();
                });
                observer.observe(document.body, { childList: true, subtree: true });
            }
        });
        
        // フォールバック:0.5秒後と2秒後にも実行
        setTimeout(customizeAccountForm, 500);
        setTimeout(customizeAccountForm, 2000);
    }
})();