【问题标题】:how to cancel window.print(); on click on the Print button, Print pop up but no print action如何取消 window.print();单击“打印”按钮,弹出“打印”但没有打印操作
【发布时间】:2018-03-21 14:00:01
【问题描述】:

我想让 window.print() 弹出,但是当用户点击打印按钮时,它不是 windows 打印而是 onclick 或 window.onbeforeprint 我希望触发我自己的个性化打印功能。 因此,在单击打印时,我需要取消打印操作并触发我的个性化()函数。

请帮助如何取消 window.print();点击打印按钮

【问题讨论】:

    标签: javascript printing onclicklistener actionlistener cancellation


    【解决方案1】:

    您只需使用preventDefault()即可实现此目的。

    Event.preventDefault() 所做的是

    Event 接口的 preventDefault() 方法告诉用户代理,如果事件没有得到显式处理,则不应像往常一样采取其默认操作。事件继续像往常一样传播,除非其中一个事件侦听器调用 stopPropagation() 或 stopImmediatePropagation(),其中任何一个都会立即终止传播。

    您可以在 MDN Web Docs 的 Event.preventDefault() 阅读更多内容

    从您的帖子来看,您似乎没有引用任何 JavaScript 库(例如 jQuery)...所以直接使用 JavaScript 方法是:

    document.querySelector("#printLink").addEventListener("click", function(event) {
        event.preventDefault();
        //your printing related window code etc.
    }, false);
    

    但是,如果您使用的是 JavaScript 库并且它恰好是 jQuery,那么您正在寻找以下内容--

    jQuery("#printLink").click(function(e) {
        e.preventDefault();
        //your printing related window code etc.
    });
    

    jQuery event.preventDefault()

    在任何一种情况下,您的打印链接都会如下所示:

    <a id="printLink" ...></a>
    

    (注意锚元素中的ID 属性)

    【讨论】:

    • 但是如何从 window.print() 捕获事件;当 onclick 打印按钮而不是 onclick 取消按钮时?
    • 这里没有printLink。它是标准的 window.print();
    • @Pax 等等……您在寻找哪种方案?场景 A:用户点击您页面上的打印按钮/链接,然后您拦截并显示您的自定义打印功能?或场景 B:用户点击您页面上的 打印按钮/链接system 打印对话框打开,然后当用户再次点击打印时,您想要拦截它?
    • 场景 B:通过系统打印对话框打开,我的意思是 window.print();在 JavaScript 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2018-07-04
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多