MediaWiki:Common.js
MediaWiki界面页面
更多操作
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
// 代码块复制按钮
mw.hook('wikipage.content').add(function ($content) {
// 遍历所有高亮代码块
$content.find('.mw-highlight').each(function () {
const $block = $(this);
// 防止重复添加按钮
if ($block.find('.copy-code-btn').length) return;
// 容器设为相对定位,让按钮悬浮在右上角
$block.css('position', 'relative');
// 创建复制按钮
const $btn = $('<button class="copy-code-btn">复制代码</button>')
.css({
position: 'absolute',
top: '6px',
right: '6px',
padding: '2px 8px',
border: 'none',
borderRadius: '4px',
background: '#555',
color: '#fff',
cursor: 'pointer',
zIndex: '10',
fontSize: '12px'
});
// 点击复制文本
$btn.on('click', async function () {
const text = $block.find('pre').text();
try {
await navigator.clipboard.writeText(text);
$btn.text('已复制');
setTimeout(() => $btn.text('复制代码'), 1500);
} catch (e) {
// 兼容不安全环境
const ta = document.createElement('textarea');
ta.value = text;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
ta.remove();
$btn.text('已复制');
setTimeout(() => $btn.text('复制代码'), 1500);
}
});
$block.append($btn);
});
});
// 返回顶部按钮(左下角)
mw.hook('wikipage.content').add(function () {
// 创建按钮DOM
const $backTop = $(`
<div id="back-to-top" title="返回顶部">
<svg width="24" height="24" viewBox="0 0 24 24" fill="#666">
<path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
</svg>
</div>
`).appendTo('body');
// 样式固定在左下角
$backTop.css({
position: 'fixed',
bottom: '25px',
left: '25px',
width: '40px',
height: '40px',
background: '#f0f0f0',
borderRadius: '50%',
display: 'none',
alignItems: 'center',
justifyContent: 'center',
boxShadow: '0 2px 6px #999',
cursor: 'pointer',
zIndex: '9999',
transition: 'opacity 0.3s'
});
// 深色模式自动变色
$(document).on('themechange', function(e, theme) {
if (theme === 'night') {
$backTop.css({ background: '#333' });
} else {
$backTop.css({ background: '#f0f0f0' });
}
});
// 滚动超过300px显示按钮
$(window).on('scroll', function () {
if ($(window).scrollTop() > 300) {
$backTop.fadeIn();
} else {
$backTop.fadeOut();
}
});
// 平滑滚动回顶部
$backTop.on('click', function () {
$('html,body').animate({ scrollTop: 0 }, 400);
});
});