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>要素であるため、コードの最後の行で (URL 全体) の代わりに (パスのみ) を使用するだけsave.pathnamesave.hrefうまくいくはずです。

于 2013-11-09T12:51:57.907 に答える