我有一个用PHP编写的Web应用程序,其中包含许多HTML格式的报告。有时,我在一个页面中有不同的报告,每个报告都有一个打印按钮。
我的一个解决方案是在新页面中使用PHP变量再次生成该报告。
但我认为还有另一种方法可以做到这一点。我可以将所有报表HTML代码复制到剪贴板中,打开一个新窗口,在其上粘贴剪贴板数据,最后打印页面内容。 我在http://archive.plugins.jquery.com/project/clipboard中看到了一些内容,但似乎这个插件不再起作用了。
你有什么想法解决我的问题(跨浏览器)?
答案 0 :(得分:3)
我可以将所有报表HTML代码复制到剪贴板中,打开一个新窗口,在其上粘贴剪贴板数据,最后打印页面内容。
你不需要剪贴板,即使你可以让它工作,你也不应该使用剪贴板:剪贴板是为了方便用户,而不是你的并且在之前覆盖其中的任何内容是不合适的。
幸运的是,您可以打开一个新窗口并设置其内容,而无需靠近剪贴板:
function printReport(elementId)
{
var elementToPrint = $("#" + elementId),
printWin = window.open("", "Print", 'left=20,top=20,width=400,height=400');
printWin.document.write(elementToPrint.html());
printWin.document.close();
printWin.focus();
printWin.print();
printWin.close(); // optionally close the new window immediately
}
工作演示(仅在Chrome中测试):http://jsfiddle.net/Vc5yy/
请注意,显然这只是一个简单的解决方案,但它应该为您提供完成自己的解决方案所需的所有部分。您可能想要应用适当的CSS样式表等。但主要的是,一旦您打开第二个窗口,您可以编写任何您想要的内容,然后调用window.print()
函数。
请注意,您应该从事件处理程序运行上述函数(例如,从我的演示中显示的按钮单击)或浏览器的弹出窗口阻止程序可能不会让它打开。