Toggle menu
20
62
5
836
Irontide Fantasy Roleplay
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
No edit summary
No edit summary
Tag: Manual revert
 
(2 intermediate revisions by the same user not shown)
Line 8: Line 8:
document.getElementsByTagName('head')[0].appendChild(link);
document.getElementsByTagName('head')[0].appendChild(link);


mw.loader.using(['jquery', 'mediawiki.util'], function () {
mw.loader.using(['mediawiki.util'], function () {
    // Wait until the DOM really exists
     $(function () {
     $(function () {
        // Click handler (delegated)
        $(document).on('click', '.clickbox', function (e) {
            var $el = $(this);
            var target = $el.data('target');


             if (!target) return; // nothing to do
        function enableClickboxes() {
             $('.clickbox').each(function () {
                var $el = $(this);


            // If target is a plain wiki page name (no leading / and no protocol),
                // Avoid double-binding
            // convert to a proper URL using mw.util.getUrl
                if ($el.data('clickbox-bound')) return;
            if (!/^(https?:)?\/\//.test(target) && target.indexOf('/') !== 0) {
                 $el.data('clickbox-bound', true);
                 target = mw.util.getUrl(String(target));
            }


            // Navigate
                // Attach click
            window.location.href = target;
                $el.on('click', function () {
        });
                    var target = $el.data('target');


        // Keyboard accessibility: Enter or Space triggers click
                    if (!target) return;
        $(document).on('keydown', '.clickbox', function (e) {
 
            if (e.key === 'Enter' || e.key === ' ') {
                    // If it's a wiki page name (no slash), convert to URL
                e.preventDefault();
                    if (!/^(https?:)?\/\//.test(target) && target.indexOf('/') !== 0) {
                $(this).trigger('click');
                        target = mw.util.getUrl(String(target));
             }
                    }
         });
 
                    window.location.href = target;
                });
 
                // Keyboard accessibility
                $el.attr('role', 'link').attr('tabindex', '0');
                $el.on('keydown', function (e) {
                    if (e.key === 'Enter' || e.key === ' ') {
                        e.preventDefault();
                        $el.click();
                    }
                });
             });
         }
 
        // Run once now
        enableClickboxes();
 
        // And again whenever MediaWiki adds content dynamically
        mw.hook('wikipage.content').add(enableClickboxes);
     });
     });
});
});

Latest revision as of 18:02, 28 November 2025

/* Any JavaScript here will be loaded for all users on every page load. */

// Add favicon
var link = document.createElement('link');
link.rel = 'icon';
link.type = 'image/x-icon';
link.href = '/images/favicon.png';
document.getElementsByTagName('head')[0].appendChild(link);

mw.loader.using(['mediawiki.util'], function () {
    // Wait until the DOM really exists
    $(function () {

        function enableClickboxes() {
            $('.clickbox').each(function () {
                var $el = $(this);

                // Avoid double-binding
                if ($el.data('clickbox-bound')) return;
                $el.data('clickbox-bound', true);

                // Attach click
                $el.on('click', function () {
                    var target = $el.data('target');

                    if (!target) return;

                    // If it's a wiki page name (no slash), convert to URL
                    if (!/^(https?:)?\/\//.test(target) && target.indexOf('/') !== 0) {
                        target = mw.util.getUrl(String(target));
                    }

                    window.location.href = target;
                });

                // Keyboard accessibility
                $el.attr('role', 'link').attr('tabindex', '0');
                $el.on('keydown', function (e) {
                    if (e.key === 'Enter' || e.key === ' ') {
                        e.preventDefault();
                        $el.click();
                    }
                });
            });
        }

        // Run once now
        enableClickboxes();

        // And again whenever MediaWiki adds content dynamically
        mw.hook('wikipage.content').add(enableClickboxes);
    });
});