MediaWiki:UserScripts/Shortcuts.js: Difference between revisions
MediaWiki interface page
More actions
Created page with "// MediaWiki:UserScripts/Shortcuts.js // Shortcuts: // d -> delete current page // h -> history // r -> recent changes // e -> edit current page // u -> upload file // p -> protect current page // // Wikitext editor only: // Ctrl+Enter (or Cmd+Enter) -> Save changes // // Notes: // - D/H/R/E/U/P won't trigger while typing. // - Ctrl/Cmd+Enter WILL trigger while typing in the wikitext textarea. (function () { if (window.__shortcutsInstalled) return; wind..." |
m Protected "MediaWiki:UserScripts/Shortcuts.js": utility script ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) |
(No difference)
| |
Latest revision as of 16:41, 10 February 2026
// MediaWiki:UserScripts/Shortcuts.js
// Shortcuts:
// d -> delete current page
// h -> history
// r -> recent changes
// e -> edit current page
// u -> upload file
// p -> protect current page
//
// Wikitext editor only:
// Ctrl+Enter (or Cmd+Enter) -> Save changes
//
// Notes:
// - D/H/R/E/U/P won't trigger while typing.
// - Ctrl/Cmd+Enter WILL trigger while typing in the wikitext textarea.
(function () {
if (window.__shortcutsInstalled) return;
window.__shortcutsInstalled = true;
function isTypingTarget(el) {
if (!el) return false;
var tag = (el.tagName || '').toLowerCase();
return tag === 'input' || tag === 'textarea' || tag === 'select' || !!el.isContentEditable;
}
function go(title, query) {
location.href = mw.util.getUrl(title, query || {});
}
function trySaveWikitext() {
var btn =
document.querySelector('#wpSave') ||
document.querySelector('button[name="wpSave"]') ||
document.querySelector('input[name="wpSave"]');
if (btn && !btn.disabled) {
btn.click();
return true;
}
return false;
}
document.addEventListener(
'keydown',
function (e) {
var k = (e.key || '').toLowerCase();
// Ctrl+Enter / Cmd+Enter -> Save changes (wikitext edit form)
if ((e.ctrlKey || e.metaKey) && !e.altKey && k === 'enter') {
if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') {
if (trySaveWikitext()) {
e.preventDefault();
e.stopPropagation();
}
}
return;
}
// Single-key shortcuts: ignore modifiers + typing
if (e.ctrlKey || e.metaKey || e.altKey) return;
if (isTypingTarget(e.target)) return;
var page = mw.config.get('wgPageName');
if (k === 'e') { e.preventDefault(); go(page, { action: 'edit' }); return; }
if (k === 'h') { e.preventDefault(); go(page, { action: 'history' }); return; }
if (k === 'p') { e.preventDefault(); go(page, { action: 'protect' }); return; }
if (k === 'd') { e.preventDefault(); go(page, { action: 'delete' }); return; }
if (k === 'r') { e.preventDefault(); go('Special:RecentChanges'); return; }
if (k === 'u') { e.preventDefault(); go('Special:Upload'); return; }
},
true
);
})();