Javascript canvas.toDataUrl()将图片发送到<;img>;新窗口中的元素

Javascript canvas.toDataUrl()将图片发送到<;img>;新窗口中的元素,javascript,canvas,Javascript,Canvas,我做错了什么 我试图通过打开一个新窗口并在一个img元素中显示.png来保存一个画布绘图,该元素用css定位在页面上 从那里你可以选择下载或分享 到目前为止,我已经知道了这一点,但是img src没有使用toDataUrl()填充 有什么想法吗?谢谢 document.getElementById(“占位符”)不是在新打开的窗口中查找该ID,而是在当前窗口中查找该ID。 您所要做的就是引用新创建的窗口的文档: function saveDrawing() { var url = canv

我做错了什么

我试图通过打开一个新窗口并在一个img元素中显示.png来保存一个画布绘图,该元素用css定位在页面上

从那里你可以选择下载或分享

到目前为止,我已经知道了这一点,但是img src没有使用toDataUrl()填充


有什么想法吗?谢谢

document.getElementById(“占位符”)
不是在新打开的窗口中查找该ID,而是在当前窗口中查找该ID。 您所要做的就是引用新创建的窗口的文档:

function saveDrawing() {
    var url = canvas.toDataURL(); 
    w = window.open('saveimage.php'); 
    w.onload = function(){
        var placeholder = w.document.getElementById("placeholder");  
        placeholder.src = url;
    };  
}

这可能有错误,其想法是将对新窗口的引用存储在
w
中,然后在加载时访问其DOM以修改图像src

文档。getElementById(“占位符”)
不是在新打开的窗口中查找该ID,而是在当前窗口中查找该ID。 您所要做的就是引用新创建的窗口的文档:

function saveDrawing() {
    var url = canvas.toDataURL(); 
    w = window.open('saveimage.php'); 
    w.onload = function(){
        var placeholder = w.document.getElementById("placeholder");  
        placeholder.src = url;
    };  
}

这可能有错误,其想法是将对新窗口的引用存储在
w
中,然后在加载该窗口时,访问其DOM以修改图像src

对从同一域打开的其他窗口的访问没有任何限制,如这里所示。正确,我不知道为什么我认为它是在同一个领域。我必须将焦点设置为打开的窗口还是什么?更新答案以反映这一点谢谢!工作得很漂亮!对从同一个域打开的其他窗口的访问没有限制,就像这里的情况一样。是的,我不知道为什么我认为它在同一个域上。我必须将焦点设置为打开的窗口还是什么?更新答案以反映这一点谢谢!工作得很漂亮!