如何将HTML文件加载到画布中?

时间:2010-07-18 17:54:40

标签: html html5 canvas

我知道我们可以将图像加载到画布中,但我想知道我们是否能够将简单的HTML文件加载到画布中。如果是,怎么样?

感谢。

3 个答案:

答案 0 :(得分:5)

简答:不,你不能。

答案很长: 不可靠,但是你可以用某些(可能是hackish)方式。关键在于您定义为“图像”。您知道可以使用drawImage()将图像添加到画布中 - 您可能不知道的是“图像”可能是什么(不一定是实际图像)。

首先,“图像”可以是HTML5视频元素 - 因此您可以将视频添加到画布。 其次,在大多数现代浏览器中,“图像”可以是SVG文档,它可以通过SVG <foreignObject>元素包含HTML。

浏览器支持:

  • Firefox目前不支持drawImage()中的SVG文档。 related bug is here,我认为计划修复。
  • <foreignObject>在大多数浏览器中都有错误 - Firefox(具有讽刺意味)似乎有最好的支持。

示例:

<svg xmlns="http://www.w3.org/2000/svg">
 <foreignObject x="0" y="0" height="800" width="800">
  <body xmlns="http://www.w3.org/1999/xhtml">
   <p>Hello world!</p>
   <input type="date"/>
  </body>
 </foreignObject>
</svg>

尝试在Opera中使用canvas drawImage()加载该文件 - 因为您会看到它的交互性非常错误,但它显示正常。

答案 1 :(得分:1)

他在谈论HTML5 / Javascript。

如果没有编写自己的渲染引擎(在Javascript中),这是不可能的。

答案 2 :(得分:1)

html2canvasrasterizeHTML.js似乎是您正在寻找的工具。

Mozilla提供了第三个没有插件的解决方案,但我无法在此处运行:Although it's not trivial (for security reasons), it's possible to draw DOM content—such as HTML—into a canvas.

还有PhantomJS,支持Screen Capturing