是否可以在javascript中取消打印

Tho*_*asD 3 javascript iframe jquery

我正在使用此处找到的代码:检测浏览器打印事件来检测用户是否想要打印页面。到目前为止,它按预期工作。

在“afterPrint”函数中,我调用一个函数,该函数创建并附加一个 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);
    };
Run Code Online (Sandbox Code Playgroud)

在更适合打印的页面上,我创建布局,然后调用: window.print();

通过创建和附加 iframe,用户可以停留在浏览器中的页面上,但打印布局有所不同。

加载打印机友好页面的唯一方法似乎是取消打印对话框中的打印,然后触发 afterPrint 功能。是否有可能在 javascript 中取消用户的打印对话框?

谢谢,

托马斯

Nae*_*ikh 6

不,无法使用 Javascript 取消打印事件。

阅读此内容:[MDN,印前 -可取消:否]

另请参阅小提琴

var beforePrint = function() {
        console.log('Functionality to run before printing.');
        alert('cancelable : '+event.cancelable)
    };
Run Code Online (Sandbox Code Playgroud)