跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
分类索引
最近更改
随便看看
灵兰秘典
捐助本站
帮助
帮助
联系我们
关于本站
MediaWiki帮助
USER-SIDEBAR
GROUP-SIDEBAR
CATEGORY-SIDEBAR
中医百科
搜索
搜索
外观
登录
个人工具
登录
查看“︁MediaWiki:Gadget-PrintOptions.js”︁的源代码
系统消息
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
MediaWiki:Gadget-PrintOptions.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
(function() { 'use strict'; const PrintEnhancer = { windowManager: null, printDialog: null, config: { enhanced: true, noimages: false, norefs: false, notoc: false, nobackground: false, blacktext: true }, init() { if (mw.config.get('wgNamespaceNumber') < 0) return; mw.hook('wikipage.content').add(() => { const $printLink = $('#t-print a'); if (!$printLink.length) return; $printLink .text(mw.message('print-version').plain()) .off('click') .on('click', (e) => { e.preventDefault(); e.stopPropagation(); // 关键修复:阻止事件冒泡 mw.loader.using(['oojs-ui', 'oojs-ui-windows']).then(() => 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, expanded: false }); const fieldset = new OO.ui.FieldsetLayout({ label: mw.message('print-options').plain() }); PrintEnhancer.questions.forEach(question => { if (question.type === 'checkbox') { const checkbox = new OO.ui.CheckboxInputWidget({ selected: PrintEnhancer.config[question.returnvalue] }); fieldset.addItems([ new OO.ui.FieldLayout(checkbox, { label: question.label, align: 'inline', help: question.help ? mw.message(question.help).plain() : null }) ]); question.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(function() { if (action === 'print') { // 保存用户选择 PrintEnhancer.questions.forEach(q => { if (q.widget) PrintEnhancer.config[q.returnvalue] = q.widget.isSelected(); }); // 关闭对话框 -> 应用样式 -> 延迟打印 return dialog.close({ action }).then(() => { PrintEnhancer.applyPrintStyles(); return new Promise(resolve => { setTimeout(() => { window.print(); setTimeout(() => location.reload(), 1000); resolve(); }, 500); // 关键延迟:确保样式生效 }); }); } else if (action === 'cancel') { return dialog.close({ action }); // 关键修复:直接关闭 } }); }; if (!this.windowManager) { this.windowManager = new OO.ui.WindowManager(); $('body').append(this.windowManager.$element); } this.printDialog = new PrintDialog({ size: 'medium' }); this.windowManager.addWindows([this.printradleDialog]); this.windowManager.openWindow(this.printDialog); }, applyPrintStyles() { let printStyle = ''; const { config } = this; // [...原有样式处理逻辑保持不变...] if (printStyle) { const style = document.createElement('style'); style.setAttribute('media', 'print'); style.textContent = printStyle; document.head.appendChild(style); } }, questions: [ // [...原有问题配置保持不变...] ] }; // [...原有i18n消息配置保持不变...] mw.hook('wikipage.content').add(() => PrintEnhancer.init()); }());
返回
MediaWiki:Gadget-PrintOptions.js
。