我知道我们可以将图像加载到画布中,但我想知道我们是否能够将简单的HTML文件加载到画布中。如果是,怎么样?
感谢。
答案 0 :(得分:5)
简答:不,你不能。
答案很长:
不可靠,但是你可以用某些(可能是hackish)方式。关键在于您定义为“图像”。您知道可以使用drawImage()
将图像添加到画布中 - 您可能不知道的是“图像”可能是什么(不一定是实际图像)。
首先,“图像”可以是HTML5视频元素 - 因此您可以将视频添加到画布。
其次,在大多数现代浏览器中,“图像”可以是SVG文档,它可以通过SVG <foreignObject>
元素包含HTML。
浏览器支持:
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)
html2canvas或rasterizeHTML.js似乎是您正在寻找的工具。
Mozilla提供了第三个没有插件的解决方案,但我无法在此处运行:Although it's not trivial (for security reasons), it's possible to draw DOM content—such as HTML—into a canvas.