MediaWiki:Common.js:修订间差异
MediaWiki界面页面
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
$(function() { | $(function() { | ||
var $ | function getTooltip() { | ||
var $tip = $('#custom-notetip-popup'); | |||
if (!$tip.length) { | |||
$tip = $('<div id="custom-notetip-popup"></div>').appendTo('body'); | |||
} | |||
return $tip; | |||
} | } | ||
mw.hook('wikipage.content').add(function($content) { | mw.hook('wikipage.content').add(function($content) { | ||
$content.find('.mw-custom-notetip').on('mouseenter', function() { | $content.find('.mw-custom-notetip').each(function() { | ||
$(this).on('mouseenter', function() { | |||
var $this = $(this); | |||
var text = $this.attr('data-notetip'); | |||
if (!text) return; | |||
var $tooltip = getTooltip(); | |||
$tooltip.text(text).show(); | |||
var rect = this.getBoundingClientRect(); | |||
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', | |||
'opacity': '1' | |||
}); | |||
}).on('mouseleave', function() { | |||
getTooltip().hide(); | |||
}); | |||
}); | }); | ||
| 第47行: | 第58行: | ||
var $label = $item.find('> .TabLabelText'); | var $label = $item.find('> .TabLabelText'); | ||
var $contentBox = $item.find('> .TabContentText'); | var $contentBox = $item.find('> .TabContentText'); | ||
if (i === 0) { | if (i === 0) { $label.addClass('selected'); $contentBox.addClass('selected'); } | ||
$label.on('click', function() { | $label.on('click', function() { | ||
$labelWrapper.find('.TabLabelText').removeClass('selected'); | $labelWrapper.find('.TabLabelText').removeClass('selected'); | ||
| 第57行: | 第65行: | ||
$contentBox.addClass('selected'); | $contentBox.addClass('selected'); | ||
}); | }); | ||
$labelWrapper.append($label); | $labelWrapper.append($label); $contentWrapper.append($contentBox); | ||
}); | }); | ||
$tabsContainer.empty().append($labelWrapper).append($contentWrapper).addClass('tabs-initialized'); | $tabsContainer.empty().append($labelWrapper).append($contentWrapper).addClass('tabs-initialized'); | ||
2026年5月10日 (日) 10:35的版本
$(function() {
function getTooltip() {
var $tip = $('#custom-notetip-popup');
if (!$tip.length) {
$tip = $('<div id="custom-notetip-popup"></div>').appendTo('body');
}
return $tip;
}
mw.hook('wikipage.content').add(function($content) {
$content.find('.mw-custom-notetip').each(function() {
$(this).on('mouseenter', function() {
var $this = $(this);
var text = $this.attr('data-notetip');
if (!text) return;
var $tooltip = getTooltip();
$tooltip.text(text).show();
var rect = this.getBoundingClientRect();
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',
'opacity': '1'
});
}).on('mouseleave', function() {
getTooltip().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();
}
});
}
});
});
});