我有一个调用window.print()的页面;在页面的底部。我无法访问window.print();它由服务器生成,我无法触摸它。基本上是因为IE我需要在打印对话框出现之前执行一些javascript,但是在页面加载之后。我不能这样做因为它一旦到达window.print();出现打印对话框。我仍然需要打印,但首先我需要运行myFunction()然后我可以使用window.print();
<html><head></head><body></body><!--no access from here--><script>window.print();</script></html>
答案 0 :(得分:20)
你应该可以像这样覆盖它......
var _print = window.print;
window.print = function() {
alert("Hi!");
// do stuff
_print();
}
答案 1 :(得分:9)
“基本上因为IE我需要......”
如果您只需要支持IE,请参阅onbeforeprint事件。
window.onbeforeprint = function () {
// some code
}
这样做的好处是代码不会在不支持 onbeforeprint 的浏览器中运行,这几乎是除了IE之外的所有浏览器。
答案 2 :(得分:0)
尝试将另一个<script>
标记放在您无权访问的标记之前,例如:
<html><head></head><body></body><script>alert('Hello There !');</script><script>window.print();</script></html>
答案 3 :(得分:0)
此功能适用于包括IE在内的所有浏览器,无论打印方式如何:
/**
* Adds listeners for crossbrowser print callback
* @param callback - callback function
*/
function onPrint(callback) {
window.matchMedia('print').addListener(query => query.matches ? callback() : null)
window.addEventListener('beforeprint', () => callback())
}
onPrint(() => console.log('printing!'))
请注意,它可能会两次运行回调函数,具体取决于浏览器。可以使用临时标志来避免这种情况。