Internet Explorer toDataURL()替代?

时间:2009-03-11 08:23:00

标签: internet-explorer canvas

所以我需要保存在<canvas>元素上绘制的图像数据。还有toDataURL()方法适用于大多数现代浏览器。

除了......你猜对了...... Internet Explorer。

我搜索了互联网,但是到处都有人说我应该使用SVG / VML来保存数据,但他们从不提及如何。我没有在IE中使用SVG / VML的经验,那么如何在Internet Explorer中保存画布元素中绘制的图像?有没有人有经验?

目前,我不得不在客户端和服务器上复制绘图代码,这开始变得复杂。因此,如果有一种方法可以提取在客户端(或服务器)端的canvas标签上绘制的图像,那肯定有帮助。

谢谢!

3 个答案:

答案 0 :(得分:3)

  1. canvas.toDataURL适用于IE9。

  2. 如果你真的需要它用于旧IE ..好吧..我只会给你一个报价

  3.   由于使用的方法的性质,将不支持

    toDataURL   Explorer Canvas:VML。我们没有找到将VML栅格化为位图的方法   使用JS的图像,甚至没有服务器端脚本。所以,如果你   真的需要IE中的DataURL,你必须使用FxCanvas   (http://code.google.com/p/fxcanvas/)或FlashCanvas   (http://flashcanvas.net/):两种基于Flash的解决方案。

    http://code.google.com/p/explorercanvas/issues/detail?id=77

答案 1 :(得分:2)

我遇到了同样的问题。我想要做的是将画布转换为图像,然后在新选项卡中打开它。我发现转换它不是问题,但在新链接中打开了。我通过生成图像,将其放入img标记,然后将其包含在新页面中来解决它。然后我使用本教程打开了新页面 - http://www.javascripter.net/faq/writingt.htm

这就是我做的事情

var canvas = document.getElementById('canvas1');
var dataURL = canvas.toDataURL();
var width = parseInt($("#main").width()); //main is the div that contains my canvas
var height = parseInt($("#main").height());
newWindow("<img src=\"" + dataURL + "\"/>");
function newWindow(content) {
    top.consoleRef = window.open("", "Organisational Structure",
        "width="+width+",height="+height
        + ",menubar=0"
        + ",toolbar=1"
        + ",status=0"
        + ",scrollbars=1"
        + ",resizable=1")
    top.consoleRef.document.writeln(
        "<html><head><title>Console</title></head>"
        + "<body bgcolor=white onLoad=\"self.focus()\">"
        + content
        + "</body></html>"
    )
    top.consoleRef.document.close()
}

答案 2 :(得分:1)

您可能能够获得与之相同的VML,但这是一种XML格式,因此可能不是您想要的。如果不使用插件,就无法从IE获取图像。