【问题标题】:Trigger Ctrl+P printing for a JQuery Modal Box through keyboard通过键盘触发 Ctrl+P 打印 JQuery 模态框
【发布时间】:2013-04-30 16:18:34
【问题描述】:

我有一个在 JQuery 模态框内的网站上弹出的文档。文档末尾有一个打印按钮,它只是在弹出框中打印文档。

我正在寻找一种可以通过按 Ctrl+P 来打印弹出框的解决方案。现在 Ctrl+p 打印包括背景在内的所有页面......我只是希望找到一个解决方案来帮助我仅在弹出窗口中打印文档。

我的 JQuery Modal Box 在 iF​​rame 中,显示方式如下:-

<div id="frameContainer">
      <iframe id="lightboxFrame" width="950px" scrolling="auto" height="500px">
         <!DOCTYPE html>
           <html>
             <head>
                <body> (Whole Document in a Div) </body>
             ...

这是弹出式 HTML 中打印弹出式文档的 DIV。

<div id="edit-actions" class="form-actions form-wrapper">
   <input id="print-submit" class="form-submit" value="Print this Survey" name="print" onclick="printAssessment()" type="button" />
</div>

这就是我所做的:-

 $(document).keydown(function(event) {
        if (event.ctrlKey==true && (event.which == '80')) { //cntrl + p
            event.preventDefault();
            printAssessment();
        }
    });

    function printAssessment() {
        //alert("Print the little page");
        window.print();
    }

当我按下 Ctrl+P 时,肯定会调用该函数,但它仍会打印整个页面。我希望它只打印模态框。奇怪的是,当我按下模态框内的打印按钮时,它使用相同的功能,它打印正确。

谢谢,

第一次编辑:-

现在部分工作。

当我将 PrintAssessment() 的函数更改为以下内容时,它可以工作:-

  function printAssessment() {

        window.frames["lightboxFrame"].focus();
        window.frames["lightboxFrame"].print();

    }

但是,奇怪的是它只在我第一次单击 Ctrl+P 时打印。当我再次尝试打印时,它一直给我这个错误:-

Uncaught TypeError: Cannot call method 'print' of undefined 

Uncaught TypeError: Cannot call method 'focus' of undefined 

谢谢。

【问题讨论】:

  • 你应该使用:$('#lightboxFrame')[0].contentWindow.print();

标签: jquery printing modal-dialog


【解决方案1】:

而不是:

 window.print();

您可以打印 iframe 的内容,如下所示:

$('#lightboxFrame')[0].contentWindow.print();

将下面的代码放入你的函数 printAssessment()

【讨论】:

  • 您好阿纳斯,感谢您的评论。但不知何故,它不起作用。我应该把这段代码放在 printAssessment() 函数中吗?谢谢。
  • 谢谢,但同样的问题。第一次尝试,它打印得很好。一秒钟尝试,它给了我以下错误:- Uncaught TypeError: Cannot read property 'contentWindow' of undefined
  • 在这里像魅力一样工作,似乎在第一个 control + P 之后他无法找到 lightboxFrame。 purhaps你要删除这个地方??
  • 第二次尝试弹出窗口是否仍然打开??
  • 是的,想象一下这种挫败感。我什至摇了摇显示器,以防万一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 2017-03-14
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2013-08-27
  • 1970-01-01
相关资源
最近更新 更多