osk*_*983 22 javascript printing google-chrome
我面临一个非常奇怪的问题.我从一个javascript文件调用window.print().这在Safari,IE,Firefox中运行良好......直到两个小时前它也在Chrome中运行.(版本29.0.1547.57)
我没有在我的javascript文件中更改任何必要的内容(实际上 - 我刚刚删除了一些注释...),但现在发生的事情真的很奇怪:在Chrome中,当调用window.print()时,打印对话框不会打开.什么都没发生.但是,当我按下重新加载时,打印对话框立即打开.
其他浏览器中的行为没有改变.在Chrome中进行调试时,我可以看到window.print()按预期调用,然后脚本继续运行.在按下重新加载之前,不会显示打印对话框.
有没有人经历过这样的事情?我也尝试在setTimeout()中调用window.print(),但这并没有改变任何东西.当我调试要打印的页面内容时,看起来是完美加载的.
我很遗憾地问,但研究时我没有找到任何东西.任何帮助,将不胜感激!
谢谢!
noy*_*ter 14
Wasiim是对的,有一个Chrome错误,window.print()当<video>DOM中有标记时,它不起作用.我通过调用这个函数解决了它:
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;
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,这是由于持续的后台流量,例如ajax调用等,阻止Chrome感觉该页面已完全加载.重新加载会中断所有流量,从而弹出打印对话框.这是Visual Studio 2013中的一个特殊问题,其中BrowserLink在后台不断剔除.这可以通过以下设置禁用BrowserLink来测试:
<configuration>
<appSettings>
<add key="vs:EnableBrowserLink" value="false"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我确信您遇到了这个问题,因为您的页面上有一个视频元素 - 很可能是 MP4。
如果您禁用此视频/或使用 OGV 视频,则打印应该可以正常工作。由于 Chrome 视频实现的限制,这是 chrome 本身的一个 bug。还需要注意的是,如果用户使用 ctrl-p / cmd-p 手动打印,打印功能会正确
http://code.google.com/p/chromium/issues/detail?id=141633
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
16873 次 |
| 最近记录: |