「MediaWiki:Common.js」の版間の差分

提供: 小樽のじかん事典
編集の要約なし
編集の要約なし
1行目: 1行目:
/**
/**
  * MediaWiki 1.44.3 アカウント作成画面 最終物理解決(JS版)
  * MediaWiki 1.44.3 アカウント作成画面 無限ループ防止版
* 既に書き換え済みの場合は処理をスキップするように修正しました。
  */
  */
(function() {
(function() {
6行目: 7行目:
         if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;
         if (mw.config.get('wgCanonicalSpecialPageName') !== 'CreateAccount') return;


         // 1. ラベルの書き換え
         // 1. メールアドレスの書き換え
         var labels = document.getElementsByTagName('label');
         var labels = document.getElementsByTagName('label');
         for (var i = 0; i < labels.length; i++) {
         for (var i = 0; i < labels.length; i++) {
             if (labels[i].innerHTML.indexOf('メールアドレス') !== -1) {
             var label = labels[i];
                 labels[i].innerHTML = 'メールアドレス';
            // 「(省略可能)」が含まれている場合のみ書き換える(無限ループ防止)
            if (label.getAttribute('for') === 'wpEmail' || label.innerHTML.indexOf('メールアドレス') !== -1) {
                 if (label.innerHTML.indexOf('(省略可能)') !== -1) {
                    label.innerHTML = 'メールアドレス';
                }
             }
             }
             if (labels[i].innerHTML.indexOf('本名') !== -1) {
            // 本名の書き換え
                 labels[i].innerHTML = 'HN(省略可能)';
             if (label.getAttribute('for') === 'wpRealName' || label.innerHTML.indexOf('本名') !== -1) {
                 if (label.innerHTML.indexOf('(省略可能)') !== -1) {
                    label.innerHTML = 'HN(省略可能)';
                }
             }
             }
         }
         }


         // 2. メールアドレス必須化(属性付与)
         // 2. 必須属性の付与
         var emailInput = document.getElementById('wpEmail');
         var emailInput = document.getElementById('wpEmail');
         if (emailInput) {
         if (emailInput && !emailInput.required) {
             emailInput.required = true;
             emailInput.required = true;
             emailInput.setAttribute('required', 'required');
             emailInput.setAttribute('required', 'required');
25行目: 33行目:
     };
     };


    // 実行と監視
     if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
     if (mw.config.get('wgCanonicalSpecialPageName') === 'CreateAccount') {
        // 初回実行
         enforce();
         enforce();
         // 画面の変化を常に監視して、上書きを許さない
 
         var observer = new MutationObserver(enforce);
         // 監視対象を限定し、無限ループを回避
        observer.observe(document.body, {childList: true, subtree: true});
         var observer = new MutationObserver(function(mutations) {
       
             for (var i = 0; i < mutations.length; i++) {
        // 送信ボタンクリック時にも強制チェック
                if (mutations[i].addedNodes.length > 0) {
        $(document).on('click', '#wpCreateaccount', function(e) {
                    enforce();
             var email = document.getElementById('wpEmail');
                    break;
            if (email && !email.value) {
                 }
                alert('メールアドレスは必須項目です。');
                email.focus();
                 e.preventDefault();
                return false;
             }
             }
         });
         });
        var target = document.getElementById('mw-content-text');
        if (target) {
            observer.observe(target, {childList: true, subtree: true});
        }
     }
     }
})();
})();

2025年12月27日 (土) 11:14時点における版

/**
 * 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('本名') !== -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});
        }
    }
})();