Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js

MediaWiki interface page
Revision as of 21:39, 3 April 2026 by Thatrobin3001 (talk | contribs)

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
$(function() {
    $('[accesskey="t"]').removeAttr('accesskey');
    $('[accesskey="n"]').removeAttr('accesskey');
    $('#pt-mytalk').remove();
    $('#ca-talk').remove();
    $('#ca-addsection').remove();
});

$(function() {
    // Handle redirects with tab switching
    var $redirect = $('span.mw-redirectedfrom a');
    if ($redirect.length) {
        waitAndSwitchTab($redirect.text().trim());
    }

    // Handle hash-based tab switching
    if (window.location.hash && window.location.hash.indexOf('tabber-tabpanel') !== -1) {
        waitAndSwitchTab(null, window.location.hash.substring(1));
    }

    // Intercept search result clicks
    document.addEventListener('click', function(e) {
        var link = e.target.closest('a');
        if (!link) return;
        var href = link.getAttribute('href');
        if (!href) return;

        // Check if this is a redirect page link
        var title = link.textContent.trim();
        var pageTitle = href.replace(/^\//, '').replace(/_/g, ' ');

        // If the link text doesn't match where it's going, it's probably a resolved redirect
        if (title !== pageTitle && link.closest('.citizen-typeahead')) {
            e.preventDefault();
            // Navigate using the redirect so our observer can catch it
            window.location.href = '/index.php?title=' + encodeURIComponent(title) + '&redirect=yes';
        }
    }, true);

    function waitAndSwitchTab(from, panelId) {
        var observer = new MutationObserver(function(mutations, obs) {
            var panels = document.querySelectorAll('[role="tabpanel"]');
            if (panels.length > 0) {
                if (panelId) {
                    var tab = document.querySelector('[aria-controls="' + panelId + '"]');
                    if (tab) tab.click();
                } else if (from) {
                    panels.forEach(function(panel) {
                        if (panel.textContent.indexOf(from) !== -1) {
                            var id = panel.getAttribute('id');
                            var tab = document.querySelector('[aria-controls="' + id + '"]');
                            if (tab) tab.click();
                        }
                    });
                }
                obs.disconnect();
            }
        });
        observer.observe(document.body, { childList: true, subtree: true });
    }
});