打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Common.js

MediaWiki界面页面
弃权者留言 | 贡献2026年5月10日 (日) 10:33的版本

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
$(function() {
    var $tooltip = $('#custom-notetip-popup');
    if (!$tooltip.length) {
        $tooltip = $('<div id="custom-notetip-popup"></div>').appendTo('body');
    }

    mw.hook('wikipage.content').add(function($content) {
        $content.find('.mw-custom-notetip').on('mouseenter', function() {
            var $this = $(this);
            var text = $this.attr('data-notetip');
            if (!text) return;

            var rect = this.getBoundingClientRect();
            $tooltip.text(text).show();

            var tipHeight = $tooltip.outerHeight();
            var tipWidth = $tooltip.outerWidth();
            
            var top = window.scrollY + rect.top - tipHeight - 10;
            var left = window.scrollX + rect.left + (rect.width / 2) - (tipWidth / 2);

            if (rect.top - tipHeight < 20) {
                top = window.scrollY + rect.bottom + 10;
            }

            var winWidth = $(window).width();
            if (left < 10) left = 10;
            if (left + tipWidth > winWidth - 10) left = winWidth - tipWidth - 10;

            $tooltip.css({ 'top': top + 'px', 'left': left + 'px', 'display': 'block' });
        }).on('mouseleave', function() {
            $tooltip.hide();
        });

        mw.loader.using('jquery.makeCollapsible').then(function() {
            $content.find('.mw-collapsible').makeCollapsible();
        });

        $content.find('.Tabs:not(.tabs-initialized)').each(function() {
            var $tabsContainer = $(this);
            var $tabItems = $tabsContainer.find('> .Tab');
            if (!$tabItems.length) return;
            var $labelWrapper = $('<div class="TabLabel"></div>');
            var $contentWrapper = $('<div class="TabContent"></div>');
            $tabItems.each(function(i) {
                var $item = $(this);
                var $label = $item.find('> .TabLabelText');
                var $contentBox = $item.find('> .TabContentText');
                if (i === 0) {
                    $label.addClass('selected');
                    $contentBox.addClass('selected');
                }
                $label.on('click', function() {
                    $labelWrapper.find('.TabLabelText').removeClass('selected');
                    $contentWrapper.find('.TabContentText').removeClass('selected');
                    $(this).addClass('selected');
                    $contentBox.addClass('selected');
                });
                $labelWrapper.append($label);
                $contentWrapper.append($contentBox);
            });
            $tabsContainer.empty().append($labelWrapper).append($contentWrapper).addClass('tabs-initialized');
        });

        $content.find('.nav-pill-btn').on('click', function() {
            var $clicked = $(this);
            var match = $clicked.attr('class').match(/mw-customtoggle-game(\d+)/);
            if (!match) return;
            var $myContent = $('#mw-customcollapsible-game' + match[1]);
            if ($myContent.hasClass('mw-collapsed')) {
                $('.nav-pill-content').not($myContent).each(function() {
                    var $other = $(this);
                    if (!$other.hasClass('mw-collapsed')) {
                        var otherNum = $other.attr('id').replace('mw-customcollapsible-game', '');
                        $('.mw-customtoggle-game' + otherNum).first().click();
                    }
                });
            }
        });
    });
});