来自柯南百科

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
(function() {
    const urlParams = new URLSearchParams(window.location.search);
    if (mw.config.get('wgAction') === 'edit' && urlParams.has('undoafter') && urlParams.has('undo')) {
        const saveBtn = document.getElementById('wpSave');
        const editSummaryField = document.getElementById('wpSummary');
        const summaryVal = editSummaryField.value;
        const saveVal = saveBtn.value;
        const regex = /\[\[Special:Contributions\/([^|]+)\|[^|]+\]\]/;
        const match = summaryVal.match(regex);

        if (match && match[1]) {
            const username = match[1];
            if (mw.config.get('wgUserName') !== username) {
                editSummaryField.value = '';
                editSummaryField.placeholder = '请填写撤销理由,不少于5个字。';
                disableBtn(saveBtn);
                editSummaryField.addEventListener('input', function() {
                    if (editSummaryField.value.length >= 5 && !areAllCharactersSame(editSummaryField.value)) {
                        saveBtn.disabled = false;
                        saveBtn.value = saveVal;
                        saveBtn.parentNode.classList.remove('oo-ui-widget-disabled');
                        saveBtn.parentNode.classList.add('oo-ui-widget-enabled', 'oo-ui-flaggedElement-progressive', 'oo-ui-flaggedElement-primary');
                    } else {
                        disableBtn(saveBtn);
                    }
                });
            }
        }
    }

    function disableBtn(saveBtn) {
        saveBtn.disabled = true;
        saveBtn.value = '请填写撤销理由';
        saveBtn.parentNode.classList.remove('oo-ui-widget-enabled', 'oo-ui-flaggedElement-progressive', 'oo-ui-flaggedElement-primary');
        saveBtn.parentNode.classList.add('oo-ui-widget-disabled');
    }
    
    function areAllCharactersSame(str) {
        const trimmedString = str.trim().replace(/[,。?!,.;!?]/g, '');
        const uniqueCharacters = trimmedString.split('').filter(function (value, index, self) {
            return self.indexOf(value) === index;
        });
        return uniqueCharacters.length === 1;
	}
})();