跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随便看看
灵兰秘典
捐助本站
帮助
帮助
联系我们
关于本站
MediaWiki帮助
USER-SIDEBAR
GROUP-SIDEBAR
CATEGORY-SIDEBAR
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁MediaWiki:Gadget-PrintOptions.js”︁的源代码
系统消息
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
MediaWiki:Gadget-PrintOptions.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
// ==UserScript== // @name MediaWiki打印增强 // @description 为MediaWiki添加高级打印选项(优化布局、图片控制等) // @namespace https://github.com/yourname/ // @version 1.1 // @license MIT // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // ============== 核心配置 ============== const PrintEnhancer = { config: { enhanced: true, noimages: false, norefs: false, notoc: false, nobackground: false, blacktext: true }, questions: [ { type: 'checkbox', returnvalue: 'enhanced', label: mw.message('print-option-enhance').plain(), help: 'print-option-enhance-help' }, { type: 'checkbox', returnvalue: 'noimages', label: mw.message('print-option-noimages').plain() }, { type: 'checkbox', returnvalue: 'norefs', label: mw.message('print-option-norefs').plain() }, { type: 'checkbox', returnvalue: 'notoc', label: mw.message('print-option-notoc').plain() }, { type: 'checkbox', returnvalue: 'nobackground', label: mw.message('print-option-nobg').plain(), help: 'print-option-nobg-help' }, { type: 'checkbox', returnvalue: 'blacktext', label: mw.message('print-option-blacktext').plain() } ], // ============== 初始化 ============== init() { if (!document.getElementById('t-print')) return; mw.loader.using(['oojs-ui', 'oojs-ui-windows']).then(() => { const $printLink = $('#t-print a'); $printLink .text(mw.message('print-version').plain()) .off('click') .on('click', (e) => { e.preventDefault(); e.stopPropagation(); this.createDialog(); }); }); }, // ============== 对话框 ============== createDialog() { function PrintDialog(config) { PrintDialog.super.call(this, config); } OO.inheritClass(PrintDialog, OO.ui.ProcessDialog); PrintDialog.static.name = 'printdialog'; PrintDialog.static.title = mw.message('print-dialog-title').plain(); PrintDialog.static.actions = [ { action: 'print', label: mw.message('print-action-print').plain(), flags: ['primary', 'progressive'] }, { action: 'cancel', label: mw.message('print-action-cancel').plain(), flags: 'safe' } ]; PrintDialog.prototype.initialize = function() { PrintDialog.super.prototype.initialize.apply(this, arguments); const panel = new OO.ui.PanelLayout({ padded: true }); const fieldset = new OO.ui.FieldsetLayout({ label: mw.message('print-options').plain() }); PrintEnhancer.questions.forEach(q => { const checkbox = new OO.ui.CheckboxInputWidget({ selected: PrintEnhancer.config[q.returnvalue] }); fieldset.addItems([ new OO.ui.FieldLayout(checkbox, { label: q.label, align: 'inline', help: q.help ? mw.message(q.help).plain() : null }) ]); q.widget = checkbox; }); panel.$element.append(fieldset.$element); this.$body.append(panel.$element); }; PrintDialog.prototype.getActionProcess = function(action) { const dialog = this; return new OO.ui.Process(() => { if (action === 'print') { PrintEnhancer.questions.forEach(q => { PrintEnhancer.config[q.returnvalue] = q.widget.isSelected(); }); return dialog.close({ action }).then(() => { PrintEnhancer.applyPrintStyles(); setTimeout(() => { window.print(); setTimeout(() => location.reload(), 1000); }, 500); }); } return dialog.close({ action }); // 处理cancel }); }; if (!this.windowManager) { this.windowManager = new OO.ui.WindowManager(); $('body').append(this.windowManager.$element); } this.windowManager.addWindows([new PrintDialog({ size: 'medium' })]); this.windowManager.openWindow(this.printDialog); }, // ============== 打印样式 ============== applyPrintStyles() { let css = '@media print { '; const c = this.config; if (c.enhanced) css += ` .noprint, #siteNotice, .mw-indicators, .mw-editsection, .firstHeading .mw-headline { display: none !important; } `; if (c.noimages) css += 'img, .video-container { display: none !important; }'; if (c.norefs) css += 'sup.reference, .references { display: none !important; }'; if (c.notoc) css += '#toc, .toc { display: none !important; }'; if (c.nobackground) css += 'body { background: white !important; }'; if (c.blacktext) css += 'body { color: black !important; }'; css += '}'; const style = document.createElement('style'); style.media = 'print'; style.textContent = css; document.head.appendChild(style); } }; // ============== 消息初始化 ============== mw.messages.set({ 'print-version': '可打印版本', 'print-dialog-title': '打印设置', 'print-options': '自定义打印选项', 'print-action-print': '打印', 'print-action-cancel': '取消', 'print-option-enhance': '优化打印布局', 'print-option-enhance-help': '隐藏编辑按钮等非必要元素', 'print-option-noimages': '隐藏所有图片', 'print-option-norefs': '隐藏参考文献', 'print-option-notoc': '隐藏目录', 'print-option-nobg': '移除背景色', 'print-option-nobg-help': '节省墨水,但可能影响部分内容可见性', 'print-option-blacktext': '强制纯黑色文字' }); // ============== 启动 ============== mw.hook('wikipage.content').add(() => PrintEnhancer.init()); })();
返回
MediaWiki:Gadget-PrintOptions.js
。