Google Chrome不会打印我的Javascript和AJAX生成的内容

时间:2011-10-25 14:56:40

标签: google-chrome printing

我是网络应用程序的开发者。

Chrome正确显示我的Javascript和AJAX生成的网页,但是当我尝试打印它们时(通过其原生功能)我得到一个空白页。

打印在其他浏览器上运行正常。

我尝试过使用Chrome打印服务器端生成的页面,打印得很好。

我的网络应用程序的网页上有什么问题?我认为问题是这些页面是由Javascript和AJAX动态生成的 我这样说是因为我刚发现我甚至无法使用Chrome正确保存这些页面(所有动态HTML都没有显示)。

我使用的是Google Chrome 13.0.782.112 如何调试和修复此问题? 有没有解决方法? 是否有人设法使用谷歌浏览器打印动态生成的内容?

这个问题让我抓狂!

P.S。:我的一些用户在Safari上报告了同样的问题: - (

更新:升级到Chrome 14.0.835.202,但问题仍然存在......

3 个答案:

答案 0 :(得分:2)

我有完全相同的问题,但不是在Chrome中(虽然我实际上没有使用Chrome测试)。在某些浏览器上(我不记得哪些浏览器 - 但它在IE或FF中),不会打印任何通过JavaScript添加到DOM中的内容。实际打印的是提供给浏览器的原始文档。

我使用以下JavaScript函数成功解决了这个问题:

function docw()
{
    var doct = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"  
    \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
    document.write(doct + document.getElementsByTagName('html')[0].innerHTML);
}

当JavaScript页面操作完成时调用此方法。它实际上读取整个DOM,然后使用document.write将整个文档重新写回自身。现在可以在IE和FireFox上为我的特定项目打印了,虽然我很确定其中一个已经在第一时间工作了,而另一个没有(不记得哪个来自内存,它是不是我现在可以拉出来测试的项目)。这是否能解决Chrome中我不知道的问题,但值得一试。

编辑非常抱歉,但我是一个完整的蠢货。我只是重新阅读了我的旧评论,这个解决方案与打印无关;它实际上是修复了一个问题,当保存到文件时,只保存原始提供的文档。然而,那说,我仍然想知道它是否值得一试。

答案 1 :(得分:2)

这帮助我解决了一个相关的问题 - 如何查看/保存动态生成的HTML本身。我想出了以下的书签。

javascript:(function(){document.write('<pre>'+(document.getElementsByTagName('html')[0].innerHTML.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'))+'</pre>')})()

我运行它并'全选'/复制,然后(在Linux中)执行'xclip -out'将大量剪贴板数据导向文件。

答案 2 :(得分:2)

Trevor的回答对我来说完全有效 - 用jquery我只是做了类似

的事情
$("html").html $("html").html()

完美地工作