Kinetic JS:toDataURL()不适用于Images

时间:2013-09-12 20:52:51

标签: canvas html5-canvas kineticjs

我已定义此功能:

function viewCanvasImg() {
    //("stage" is a kineticjs stage class object)
    stage.toDataURL({ 
        callback: function(dataUrl) {
            document.getElementById('prova').src=dataUrl;
            window.open(dataUrl);
        }
    });
}

但是当我用按钮调用它时它不起作用。使用形状和绘制所有工作都很好,但画布上没有图像。

解决 我注意到代码只能在本地机器上运行,然后我放在我的网络服务器上,一切正常。

2 个答案:

答案 0 :(得分:0)

检查教程,看看它是否适合你:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-stage-data-url-with-kineticjs/

您的代码看起来很合适。如果它不起作用,您可能在调用window.open之前收到Javascript错误。检查控制台,console.log是你的朋友。

此外,可能发生的事情是stage未在您的函数中定义。因此,您可能需要通过viewCanvasImg函数传递舞台对象。

<强>更新

使用图片和toDataURL,您必须了解同源政策

请在此处阅读以获取更多信息:Why does canvas.toDataURL() throw a security exception?

http://en.wikipedia.org/wiki/Same-origin_policy

这是KineticJS在控制台中抛出的错误:

  

动态警告:无法获取数据网址。试图突破用户代理的安全策略。

答案 1 :(得分:0)

我在新窗口中打开数据图像网址时遇到类似问题;不会显示在本地。

尝试右键单击&gt;在Chrome中检查元素。