Javascript 是否可以只打印画布元素?

Javascript 是否可以只打印画布元素?,javascript,printing,canvas,Javascript,Printing,Canvas,我创建了一个网页,允许您输入一些信息,然后根据这些信息在画布元素中绘制图像。除了印刷之外,我的工作方式和我想要的差不多 有没有打印画布元素的方法,或者创建一个新窗口来绘制,这是唯一的方法 更新: 答案很简单。我在想一个更复杂的解决方案 我希望我能选择不止一个答案。当我使用*禁用显示时,无法打印画布。最简单的解决方案是关闭我用于输入的表单,在@media print{}内的CSS中使用表单{display:none;}。谢谢你的快速回复 @media print {

我创建了一个网页,允许您输入一些信息,然后根据这些信息在画布元素中绘制图像。除了印刷之外,我的工作方式和我想要的差不多

有没有打印画布元素的方法,或者创建一个新窗口来绘制,这是唯一的方法

更新:

答案很简单。我在想一个更复杂的解决方案

我希望我能选择不止一个答案。当我使用*禁用显示时,无法打印画布。最简单的解决方案是关闭我用于输入的表单,在@media print{}内的CSS中使用表单{display:none;}。谢谢你的快速回复



    @media print {
           form {
         display:none;
       }
    }


我不是100%确定支持,但您可以使用CSS并在
media=“print”
标记中添加一个属性。在这个CSS文件中,只需隐藏打印时不想显示的元素:
display:none

您可以尝试以下方法:

@media print {
  * {
    display:none;
  }

  #SOME-CANVAS-ID {
    display:block;
  }
}
我不确定默认情况下画布是否为块,但您可以尝试类似的方法,看看它是否有效。其思想是,它将隐藏打印媒体的所有内容(*),除了一些其他任意元素,只要规则的优先级较高(这就是我使用ID选择器的原因)

编辑:如果CSS3(特别是)有更多的支持,那么您的规则就可以这么简单:

*:not(canvas) {
  display:none;
}

但是,这可能会导致和标记被隐藏,从而有效地隐藏画布…

您可以尝试创建一个仅用于打印的画布:

this.Print = function () {
    var printCanvas = $('#printCanvas');
    printCanvas.attr("width", mainCanvas.width);
    printCanvas.attr("height", mainCanvas.height);
    var printCanvasContext = printCanvas.get(0).getContext('2d');
    window.print();
}
我知道Safari支持:not(),如果Opera不支持,我会感到震惊,我相信firefox trunk支持它(我不知道firefox 3.0)--考虑到他们是真正支持Canvas元素的浏览器,这应该足够了:D声称所有3个都不支持--所以如果你使用Canvas,:not()就可以了。