how to restore overriden javascript print method
我以前的同事重写window.print方法:
1 2 3 4 5 6 7 8 9 | function print(data){ var window_print = window.open('', 'my div', 'height=768, width=1024'); window_print.document.write('<!DOCTYPE html><html><head>Печать</head><body>' + data + '</body></html>'); window_print.print(); window_print.close(); } |
我的意图是使用该功能的默认行为:只打印当前页面,我添加:
if(data) {....} else { window.print() }
当然我收到错误:"太多的递归:window.print();"
我的问题是如何调用默认行为window.print()?
编辑:好的,在某些浏览器中,
1 2 3 4 5 6 7 | var printWindow = window.print; // define your new print function here var print = function(data) { ... }; // then later: printWindow.call(window); |
注意:如果你在全局范围内完成所有这些操作,那么你需要使用函数表达式(
原版的:
尝试:
1 | Object.getPrototypeOf(window).print.call(window); |
您还需要使用
您需要将原始打印方法作为另一个属性存储在窗口中,就在您自己的
编辑:您还需要将新的
1 2 3 4 5 6 7 8 9 10 11 12 13 | window.originalPrint = window.print; window.print = function(data) { if(data) { document.getElementById('foo').innerHTML = data; } else { window.originalPrint(); } } |
1 2 | <button onclick="window.print('hello')">print('hello')</button> <button onclick="window.print()">print()</button> |