我正在努力解决这个问题,今晚我的成功很少。如果我只知道在调用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()
的那一天。
答案 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