2013-03-19 33 views
4

我有模式对话框,应该打印一些文本,并打印链接。所以当我按下打印时,需要大约30秒才能在chrome中打开预览对话框(firefox,safari,即很好)。这是什么原因?Chrome window.print()打开时间太长

对话框:

<div id="dialog"> 
    <div id="to_print_data"> 
    My data to print!!!!! 
    </div> 
    Click <a href="#" onclick="window.print(); return false;"> here</a> 
</div> 

    <style> 
    @media print { 
     body * { 
     visibility:hidden; 
     } 

    #to_print_data, #to_print_data * { 
     visibility:visible; 
     } 
     #to_print_data { 
     position:absolute; 
     left:0!important; 
     top:0!important; 
     border:0!important; 
     font-size:16px!important; 
     } 
    } 
    </style> 

UPDATE:

我找到了原因,在后台运行一些脚本,使POST请求,并要求已暂停状态约30秒,之后完成打印 - 对话出现。如何防止这种行为,当打印等待发布请求完成时,不删除脚本?

+1

可能是针对Chrome的您的特定情况下(太多扩展加载或东西)。如果您在隐身模式下尝试,会发生什么情况? – 2013-03-19 13:12:21

+0

如果使用chrome,请使用开发人员工具下的网络面板查看哪些资源导致加载过程中的延迟。 – blackhawk 2013-03-19 13:12:32

+0

@RobGrzyb版本是版本25.0.1364.172米;并且所有扩展都被禁用 – Sergey 2013-03-19 13:13:27

回答

3

我找到了原因。如果在后台运行某个扩展程序,则发出发布请求。这个请求有待处理状态约30秒。只有在完成打印对话框后才会出现。所以未决请求块打印对话框中打开

0

在我的情况下,它甚至不会打印在所有,直到我刷新页面,如下所述:Chrome: window.print() print dialogue opens only after page reload (javascript)

@ noypiscripter的回答解决了这个问题对我来说:

function printPage() { 
    window.print(); 

    //workaround for Chrome bug - https://code.google.com/p/chromium/issues/detail?id=141633 
    if (window.stop) { 
     location.reload(); //triggering unload (e.g. reloading the page) makes the print dialog appear 
     window.stop(); //immediately stop reloading 
    } 
    return false; 
}