1

我的问题可能看起来很奇怪,因为我不知道如何表达它!!!问题是我在js中写了一个函数

function onSavePNG(url){
    var save =  document.createElement('a');
    console.log('url in save function'+url);
    save.href = url;
    console.log('save.href'+save.href);
    save.target = '_blank';
    save.download = 'Slide no '+(i+1)+'.png' || 'unknown';
    var event = document.createEvent('Event');
    event.initEvent('click', true, true);
    save.dispatchEvent(event);
    (window.URL || window.webkitURL).revokeObjectURL(save.href);
}

参数 'url' 是来自画布的 dataURL,该函数应该将图像保存到磁盘。save.href 没有保存实际的 dataURL,它已更改为

'http://localhost:3000/data:image/png;base64.......'

我没有得到任何文件。我该怎么做才能做到这一点

'http://localhost:3000/' 

不会成为分配给 save.href 的 dataURL 的一部分?

4

2 回答 2

2

我通过删除出现在 dataURL 开头和结尾的单引号解决了我的问题

function onSavePNG(url){
    var save = document.createElement('a');
    console.log(url[0]+'  '+url[url.length-1]);
    url = url.slice(1);
    url = url.substring(0,url.length-1);
    console.log(url[0]+'  '+url[url.length-1]);
    save.href = url;
    save.target = '_blank';
    save.download = 'Image.png' || 'unknown';
    var event = document.createEvent('Event');
    event.initEvent('click', true, true);
    save.dispatchEvent(event);
    (window.URL || window.webkitURL).revokeObjectURL(save.href);
}

它现在正在工作:)

于 2013-11-10T04:59:56.920 回答
0

因为save是一个<a>元素,只需在代码的最后一行使用save.pathname(仅路径)而不是save.href(整个 URL)就可以了。

于 2013-11-09T12:51:57.907 回答