【问题标题】:Google Chrome doesn't print my Javascript-and-AJAX-generated contentGoogle Chrome 不打印我的 Javascript 和 AJAX 生成的内容
【发布时间】:2026-02-07 06:55:02
【问题描述】:

我是 Web 应用程序的开发人员。

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

在其他浏览器上打印效果很好。

我已经尝试使用 Chrome 打印服务器端生成的页面,并且打印效果很好。

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

我使用的是 Google Chrome 13.0.782.112。
如何调试和解决此问题? 有什么解决方法吗? 是否有人设法使用 Google Chrome 打印动态生成的内容?

这个问题快把我逼疯了!

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

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

【问题讨论】:

  • 你能发一些代码给我们看看吗?
  • 我刚刚做了一个测试fiddle,它对我来说工作正常。您使用的是不同的代码还是什么?

标签: google-chrome printing


【解决方案1】:

我也遇到了完全相同的问题,虽然不是在 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 中的问题,但值得一试。

编辑非常抱歉,但我是一个完整的平民。我只是重新阅读了我的旧 cmets,这个解决方案与打印无关;它实际上是为了解决保存到文件时只保存原始服务文档的问题。但是,话虽如此,我仍然想知道它是否值得一试。

【讨论】:

  • 你是最棒的,特雷弗!惊人的!我多么高兴!请大家投票给这个答案:我的问题很模糊,我没有显示任何代码,但他的 sn-p 完全正确!
  • 哈,表明偶尔做一个长镜头是值得的!很高兴它有帮助!
【解决方案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”以将大量剪贴板数据定向到文件。

【讨论】:

    【解决方案3】:

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

    $("html").html $("html").html()
    

    完美运行

    【讨论】: