我正在使用此处的代码:Detecting browser print event来检测用户是否要打印页面。到目前为止,它按预期工作。
在" afterPrint" -function中,我调用了一个函数,该函数创建并附加一个iframe,其中包含另一个页面,该页面具有不同的,更加印刷友好的需要打印的布局:
function printIframe (printsrc) {
var iframe = $('iframe#print');
if (iframe.length == 0)
iframe = $('<iframe id="print" />').attr('src', printsrc).css("width", "0px").css("height", "0px").css("position", "absolute").css("left", "-9999px").appendTo($("body:first"));
else
iframe.attr('src', printsrc);
};
在更适合打印机的页面上,我创建了我的布局,然后调用:
window.print();
通过创建和附加iframe,用户可以在浏览器中停留在页面上,但打印布局不同。
似乎让打印机友好页面加载的唯一方法是取消打印对话框中的打印,然后触发afterPrint功能。是否有可能在javascript中取消用户的打印对话框?
感谢,
托马斯
答案 0 :(得分:3)
不能使用Javascript取消打印事件。
阅读本文:[MDN, beforeprint - Cancelable:NO]
另见fiddle:
var beforePrint = function() {
console.log('Functionality to run before printing.');
alert('cancelable : '+event.cancelable)
};