Canvas 动能JS:toDataURL()不';我不能处理图像

Canvas 动能JS:toDataURL()不';我不能处理图像,canvas,html5-canvas,kineticjs,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);

我已经定义了这个函数:

function viewCanvasImg() {
    //("stage" is a kineticjs stage class object)
    stage.toDataURL({ 
        callback: function(dataUrl) {
            document.getElementById('prova').src=dataUrl;
            window.open(dataUrl);
        }
    });
}
但当我按按钮叫它时,它就不起作用了。所有作品的形状和画法都很好,但画布上的图像则不然

已解决
我注意到代码不仅在本地机器上有效,然后我将其放在我的Web服务器上,一切正常。

检查教程,看看它是否对您有效:

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

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

更新

对于图像和
toDataURL
,您必须注意同源策略

请阅读此处了解更多信息:

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

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


我在新窗口中打开数据图像url时遇到类似问题;不显示在本地屏幕上


尝试右键单击>检查Chrome中的元素

当我的画布仅包含绘图或形状时,该函数工作,但对于我的项目,我需要画布包含可拖放的图像,在这种情况下,我的函数不工作。该函数应该工作正常,但图像有一个例外。查看我的更新答案。我已解决。这些图像已经在我的页面的同一文件夹中。但我注意到代码并不是只在本地机器上工作,然后我把它放到我的Web服务器上,所有的工作都很好。