调用window.print()时会触发什么事件?

时间:2010-07-27 05:00:51

标签: javascript printing

我正在努力解决这个问题,今晚我的成功很少。如果我只知道在调用window.print()函数时触发了什么事件,我想我可以使下面的代码工作。

var browser_name = navigator.appName; 

if(browser_name == 'Microsoft Internet Explorer'){
     window.attachEvent("print()",on_print_function);//I realize I cannot attach an event listener to a function, I just wanted you to see what I am trying to accomplish
}

else{
     window.addEventListener("print()",on_print_function,false);
}

发生print事件时调用的函数返回一个页面,该页面在数据库中存储了一些信息。

我的最终目标是仅在相关信息将存储在数据库中时才打印页面。 我愿意采取更好的方法来解决这个问题,但我认为如果我能按照我所说的print()举办活动,我会好好的。

修改

我现在放弃了这个,我已经采取了另一种方式来做我想做的事情。我期待着FireFox支持onbeforeprint()onafterprint()的那一天。

2 个答案:

答案 0 :(得分:1)

据我所知,IE有几个事件行onbeforeprint()和onafterprint()但是其他浏览器不支持它们。所以依靠这个并不是很好。

也许你的页面上有一个打印按钮。附加一个处理程序,它执行对服务器的ajax调用以将数据存储到数据库,并且在此调用成功时,调用窗口上的print()。

这是你在找什么?

答案 1 :(得分:0)

显然你现在可以用Firefox(但不是其他浏览器)来听这个:

  

某些浏览器(包括Firefox 6及更高版本和Internet Explorer)会发送beforeprint和afterprint事件,以让内容确定何时可能发生打印。您可以使用它来调整打印期间显示的用户界面(例如在打印过程中显示或隐藏用户界面元素)。

     

用户打印或中止打印对话框后会引发afterprint事件。

https://developer.mozilla.org/en-US/docs/Web/API/window.onafterprint

您可以使用其他浏览器中的媒体查询来模拟此问题:https://stackoverflow.com/a/18325463/421243