2012-03-29 45 views
3

我已经定义了onbeforeprint,并且我修改了我的html代码,现在一旦我完成打印后,选择了打印按钮,我希望打开onafterprint但它没有。Window.onbeforeprint和Window.onafterprint同时被解雇

而是当我按下Control + Print按钮时,onbeforeprint先被触发,然后显示onafterprint事件和打印对话框。

有没有什么办法可以在点击“打印”按钮后以某种方式对我的html进行更改?

正在使用IE浏览器-9和代码如下 代码

<script type="text/javascript"> 
    window.onbeforeprint = function() { 
     alert('Hello'); 
    } 
    window.onafterprint = function() { 
     alert('Bye'); 
    } 
</script> 

感谢&问候, 弗朗西斯P.

+0

您正在使用哪种浏览器?你可以发布一些你的javasript代码吗? – antonjs 2012-03-29 06:54:14

+0

使用IE 9 – user581157 2012-03-29 07:23:53

回答

2

onbeforeprint发射对话框出现之前,允许一个改变HTML等等。

onafterprint被解雇只是出现对话框之前。甚至无法知道文档是否实际打印或用户是否取消了它。不用说什么时候打印完成(如果开始的话)。

再次:没有事件可用于跟踪打印对话框中发生的任何事情,即回答您的问题是。此外,我希望你的需求永远不会实现,因为这可以让用户感到挫败。他/她要求打印一份文件,但有一些不同。

+2

使用代码和即时编辑我的文章我不得不不同意你的最新评论。有时页面上没有用于打印的无用html。例如,假设我有一个充满表格的页面,一个侧面导航菜单和一些按钮。显然,当用户打印这个页面时,他们试图打印出这些表格。更进一步的说,你有一些DOM元素需要在打印过程中用JavaScript来控制。如果用户不需要他们全部,他们可以选择他们想要打印的页面,但是这样可以避免他们通过点击按钮或与其相关的任何内容显示每个元素。 – Justin 2016-07-29 20:27:28

-1

是的,你可以,没有赶上。我已经在一个专业应用程序中实现了。 打印浏览器,Firefox,全部

window.onload = PrintMe; 

function PrintMe() { 
    window.print(); 
    setTimeout(function() { 
    alert("OK"); 
// Here you code, for example __doPostBack('ReturnPrint', ''); 
    }, 2000); 
}