2011-12-26 40 views
0

我有一个以PHP格式编写的Web应用程序,其中包含许多HTML格式的报告。有时,我在一个页面上有不同的报告,每个报告都有一个打印按钮。使用jQuery将页面的一部分复制到剪贴板中

我的一个解决方案是在新页面中使用PHP变量再次生成该报告。

但我认为还有另一种方式来做到这一点。我可以将所有报表HTML代码复制到剪贴板中,打开一个新窗口,粘贴剪贴板数据并最终打印页面内容。 我在http://archive.plugins.jquery.com/project/clipboard中看到了一些东西,但看起来这个插件不起作用了。

你有什么想法解决我的问题(跨浏览器)?

+0

所以你需要一种方法将内容复制到浏览器内的剪贴板中? – 2011-12-26 06:29:24

+0

是的。复制HTML标签及其内容... – 2011-12-26 06:35:07

+0

http://stackoverflow.com/questions/1539641/copy-text-to-the-clients-clipboard-using-jquery? – Fenec 2011-12-26 06:48:39

回答

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()函数。

请注意,您应该从事件处理程序(如从我的演示中所示的按钮单击)运行上述功能,或者浏览器的弹出窗口阻止程序可能不会让它打开。

+0

谢谢亲爱的nnnnnn。 – 2011-12-26 07:56:55

+0

这似乎并没有在IE8中工作。 – thomasdecrick 2013-02-15 12:54:26