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);
});
});