我是网络应用程序的开发者。
Chrome正确显示我的Javascript和AJAX生成的网页,但是当我尝试打印它们时(通过其原生功能)我得到一个空白页。
打印在其他浏览器上运行正常。
我尝试过使用Chrome打印服务器端生成的页面,打印得很好。
我的网络应用程序的网页上有什么问题?我认为问题是这些页面是由Javascript和AJAX动态生成的 我这样说是因为我刚发现我甚至无法使用Chrome正确保存这些页面(所有动态HTML都没有显示)。
我使用的是Google Chrome 13.0.782.112 如何调试和修复此问题? 有没有解决方法? 是否有人设法使用谷歌浏览器打印动态生成的内容?
这个问题让我抓狂!
P.S。:我的一些用户在Safari上报告了同样的问题: - (
更新:升级到Chrome 14.0.835.202,但问题仍然存在......
答案 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,'&').replace(/</g,'<').replace(/>/g,'>'))+'</pre>')})()
我运行它并'全选'/复制,然后(在Linux中)执行'xclip -out'将大量剪贴板数据导向文件。
答案 2 :(得分:2)
$("html").html $("html").html()
完美地工作