2013-05-07 83 views
0

我有一个文档在jQuery模式框中的网站上弹出。该文档的最后打印按钮只是在弹出框中打印文档。错误通过iframe打印 - 使用Ctrl + P时出现'未定义'错误

我想通过Ctrl + P仅在iframe中打印文档。这需要防止打印包括背景在内的所有页面的默认行为。

这是jQuery代码为印刷:

$(document).keydown(function(event) { 
    if (((event.ctrlKey == true) || (event.metaKey == true)) && (event.which == '80')) { 
      event.preventDefault(); 
      printAssessment(); 
     } 

}); 

function printAssessment() { 
    if ($('#frameContainer').length) { 
     $('#lightboxFrame')[0].contentWindow.print();  
    } 

} 

我使用iframe页面的HTML低于:

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

现在的问题是,当我打开我的模态然后按下Ctrl + P,如果我不按照我希望的方式滚动模式,它会打印出来。但是,如果我滚动模式,然后按Ctrl + P,它给了我下面的错误:

Uncaught TypeError: Cannot read property 'contentWindow' of undefined 

奇怪的是,即使当iframe是开放的,但它仍然认为它不确定的,但只有当我滚动模式iframe中。如果我只是打开模式并按Ctrl + P,它打印罚款。

回答

0

嘿使用按键事件代替的keydown

$(document).keypress(function(event) { 
if (((event.ctrlKey == true) || (event.metaKey == true)) && (event.which == '80')) { 
     event.preventDefault(); 
     printAssessment(); 
    } 

}); 

希望它的作品。

+0

事件与'contentWindow'有什么关系? – RoToRa 2013-05-07 12:17:22

0

看来$('#lightboxFrame')没有返回任何元素。如果你改变

if ($('#frameContainer').length) { 

if ($('#lightboxFrame').length) { 

相关问题