toDataUrl - 在IE中保存图像?

时间:2013-07-31 18:18:31

标签: javascript html5 canvas kineticjs

我花了很多时间使用KineticJS制作装扮游戏,我似乎已经陷入了最后的障碍。

我创建了一个“快照”按钮,我想让我的用户将画布打印到窗口或标签。以下是我的代码片段:

Camera.prototype.takeSnapshot = function()
{

    var backgroundLayer = this.controller.view.getBackgroundLayer();
    var backgroundContext = backgroundLayer.getContext();

    var manikinLayer = this.controller.view.getManikinLayer();
    var manikinCanvas = manikinLayer.getCanvas();

    //combine background and 'manikin' layers
    backgroundContext.drawImage(manikinCanvas,0 ,0);

    //open data URL in new window
    var manikinImageUrl = backgroundLayer.getCanvas().toDataURL('image/png');
    window.open(manikinImageUrl);
};

现在我确定你已经猜到了,这适用于FF,Chrome,Safari for Win,但不适用于IE或IOS Safari。做过一些研究我相信所有版本如果IE不支持这个功能?

我只是在寻找专家来确认这是否属实。

也有人可以告诉我如何在打印出来之前将backgroundLayer和ManikinLayer融合在一起吗?我得到errpr'值无法转换为第5行代码中的任何一个:HTMLImageElement,HTMLCanvasElement,HTMLVideoElement'。

任何帮助都非常感激,因为我在投入了大量精力后接近了项目!

1 个答案:

答案 0 :(得分:2)

在新窗口中,创建一个图像元素,并将源设置为dataURL:

    var win=window.open();
    win.document.write("<img src='"+manikinImageUrl+"'/>");