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

MediaWiki:Gadget-mucPageTools.js

MediaWiki界面页面
滥用过滤器留言 | 贡献2026年5月26日 (二) 23:44的版本 (添加页面工具小工具脚本)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
(function () {
	'use strict';

	function addCopyButtons($content) {
		$content.find('pre').each(function () {
			var pre = this;
			if (pre.dataset.mucCopyReady === '1') {
				return;
			}
			pre.dataset.mucCopyReady = '1';
			var wrap = document.createElement('div');
			wrap.className = 'muc-codeblock';
			pre.parentNode.insertBefore(wrap, pre);
			wrap.appendChild(pre);
			var button = document.createElement('button');
			button.type = 'button';
			button.className = 'muc-codecopy';
			button.textContent = '复制';
			button.addEventListener('click', function () {
				var text = pre.innerText || pre.textContent || '';
				navigator.clipboard.writeText(text).then(function () {
					button.textContent = '已复制';
					setTimeout(function () {
						button.textContent = '复制';
					}, 1500);
				});
			});
			wrap.appendChild(button);
		});
	}

	function hardenExternalLinks($content) {
		$content.find('a.external').each(function () {
			this.target = '_blank';
			this.rel = 'noopener noreferrer';
		});
	}

	function addBackToTop() {
		if (document.getElementById('muc-backtop')) {
			return;
		}
		var button = document.createElement('button');
		button.id = 'muc-backtop';
		button.type = 'button';
		button.setAttribute('aria-label', '返回顶部');
		button.textContent = '↑';
		button.addEventListener('click', function () {
			window.scrollTo({ top: 0, behavior: 'smooth' });
		});
		document.body.appendChild(button);
		function sync() {
			button.classList.toggle('is-visible', window.scrollY > 480);
		}
		window.addEventListener('scroll', sync, { passive: true });
		sync();
	}

	mw.hook('wikipage.content').add(function ($content) {
		addCopyButtons($content);
		hardenExternalLinks($content);
	});

	$(addBackToTop);
}());