🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2007閲覧

canvasでダウンロードされるファイル名について

rena_168

総合スコア72

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/03/08 10:00

HTML内容がリアルタイムで可変のため、html2canvsでHTML内容を5分単位でダウンロードしていますが、
「ダウンロード」フォルダに以下の許可をしたら、ファイル名に(1).png (2).png (3).pngつきます。

やりたいことは
①ファイル名に日付を設定したら、重複なしで上記のダイアログが出ないのでは?

以下のソースだと、うまくいかないのはなぜでしょうか?

HTML

1<a href="" id="ss" download="">ダウンロード</a>

javascript

1<script> 2 //ロードされた際の処理として実施: 3 window.onload = function(){ 4 5 //ボタンを押下した際にダウンロードする画像を作る 6 html2canvas(document.body,{ 7 onrendered: function(canvas){ 8 //aタグのhrefにキャプチャ画像のURLを設定 9 var imgData = canvas.toDataURL(); 10 document.getElementById("ss").href = imgData; 11 } 12 }); 13 window.addEventListener('pageshow', ()=>{ 14 setInterval(()=>document.getElementById('ss').click( (e) => { 15 // data:URLを自身のリンク先として設定すると、このあとダウンロードされる 16 const a = e.target; 17 a.href = canvas.toDataURL(); // Canvasからdata:URLを取得 18 a.download = new Date().getTime() + '.png'; // ダウンロードファイル名はタイムスタンプに設定 19 }),60000); 20 }); 21 22 </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

以下のソースだと、うまくいかないのはなぜでしょうか?

element.click() は引数を取らないと思いますので、引数として渡している関数(e) => {...}はまるっと無視されていると思います。
HTMLElement.click() - Web API | MDN

投稿2021/03/09 01:19

Lhankor_Mhy

総合スコア36928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rena_168

2021/03/09 03:52

すみません、クリック時にその時のタイムスタンプを引数として渡したいときは、どうしたらいいでしょうか?
Lhankor_Mhy

2021/03/09 04:37

#ss のクリックイベントの中で download 属性を変更すればいいと思います。 おそらく、jQuery の click() と混同しているのでは? https://api.jquery.com/click/
rena_168

2021/03/09 06:40

document.getElementById("ss").href = imgData; の下に document.getElementById("ss")..download = new Date().getTime() + '.png'; を書いてもタイムスタンプのファイル名じゃなかったです。
Lhankor_Mhy

2021/03/09 06:45

そういう書き方をお試しなのですね。 いろいろお考えになるのはいいと思いますよ。 ところで、ドットが重なっているのが気になりますが、これは大丈夫でしょうか?
rena_168

2021/03/09 06:52

すみません、書き間違いでした。 ソース上では問題ないです。 javascriptは奥深くてマスターできないです!
Lhankor_Mhy

2021/03/09 07:03

そうでしたか。 ご提示のコードを試してみましたが、当方の環境では「1615273277990.png」となり、タイプスタンプになっていますね。
rena_168

2021/03/10 08:11

サンプルを見ました。 ボタンクリックで、タイムスタンプのファイル名なってるみたいですね。 JSの下に以下のソースを入れたら、1分後の自動クリック度にスタンプファイル名になってますでしょうか? window.addEventListener('pageshow', ()=>{ setInterval(()=>document.getElementById('ss').click(),60000); });
Lhankor_Mhy

2021/03/10 08:14

それだと、全部同じファイル名になると思いますよ。 1分後に別のタイムスタンプにしたいのであれば、私のコメント「#ss のクリックイベントの中で download 属性を変更すればいい」を参考にしていただいた方がいいと思います。
rena_168

2021/03/10 08:21

コメントの「#ss のクリックイベントの中で download 属性を変更すればいい」でやってみましたが、 そうなりませんでした>< 私の以下のソースに問題がありますでしょうか? //ボタンを押下した際にダウンロードする画像を作る html2canvas(document.body,{ onrendered: function(canvas){ //aタグのhrefにキャプチャ画像のURLを設定 var imgData = canvas.toDataURL(); document.getElementById("ss").href = imgData;     document.getElementById("ss").download = new Date().getTime() + '.png'; } });
Lhankor_Mhy

2021/03/10 08:27

うーん、なるほど。 そこが「#ss のクリックイベント」だと思っていたのですね。 てっきり、私のアドバイスを無視して、独自の方法で解決しようとしているのかと思っていました。
Lhankor_Mhy

2021/03/10 08:34

#ss に当たるのが、document.getElementById("ss") です。 クリックイベントに当たるのが、 .addEventListener('click', function(){}) です。 'click'と書いてあるから、クリックイベントです。'pageshow'と書いてあったら、ページショーイベントですね。 ですので、こうなります。 https://jsfiddle.net/Lhankor_Mhy/2np4Lfoc/1/
rena_168

2021/03/10 09:36

サンプルありがとうございます!!! すみません、ちょっと違う質問になって申し訳ないですが、 HTML表示内容が可変ですと、canvas描画による画像出力は無理ですかね?
rena_168

2021/03/10 10:04

すみません、ベストアンサーとさせていただきます! 可変HTMLでのjavascript実行などは、新しく質問したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問