使用jQuery将页面的一部分复制到剪贴板

时间:2011-12-26 06:25:26

标签: jquery html clipboard

我有一个用PHP编写的Web应用程序,其中包含许多HTML格式的报告。有时,我在一个页面中有不同的报告,每个报告都有一个打印按钮。

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

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

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

1 个答案:

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

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