質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

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

Q&A

解決済

3回答

6620閲覧

FileReaderのonerrorをテストしたい

galerius

総合スコア20

JavaScript

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

0グッド

0クリップ

投稿2017/09/21 05:31

編集2017/09/21 15:36

FileReaderがファイルの読み込みを失敗した場合の処理を書こうと思い、以下のように書きました。

javascript

1var reader = new FileReader(); 2reader.onload = function(e) { 3// 正常時の処理 4}; 5reader.onerror = function(e) { 6// エラー時の処理 7}; 8reader.readAsDataURL(input.files[0]);

これの動作確認を行いたいと思うのですが、どういうファイルを読ませたら、あるいは何を行ったらonerrorのfunctionが呼ばれるようにできますでしょうか。

readAsDataURLにundefinedや適当な文字列などを入れて呼んでみても、readAsDataURLで例外が発生してしまい、onerrorは実行されませんでした。

よろしくお願いします。

追記
sii_sideさんに回答いただいた、Eventを自前で作ってdispatchEventするという方法で、onerrorの呼び出しはできました。
さらに、できれば実運用の際にonerrorのパラメータに入ってくる値などを知っておきたいので、コードを変更せずに本当にエラーを起こさせたい、と思っています。
readAsDataURLに渡しているinputは、<input type="file">なエレメントなのですが、ブラウザ上からファイルの指定をするなどして、FileReaderにエラーを起こさせる方法がありましたら、教えていただけないでしょうか。

よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

JavaScript

1var event = new Event('error'); 2reader.dispatchEvent(event);

イベントオブジェクトを生成して発火という方法で、イベントハンドラを呼び出すことが可能かと思います。

JavaScript

1var event = document.createEvent('Event'); 2event.initEvent('error', false, false); 3reader.dispatchEvent(event);

IEまで含めるなら、document.createEventから生成することで対応できます。

投稿2017/09/21 08:13

sii_side

総合スコア849

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

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

galerius

2017/09/21 15:15

回答ありがとうございます。 readAsDataURLの直後にdispatchEventを入れることで、onerrorを呼び出すことができました。
guest

0

たとえばフォルダを選択するとか(<input type="file">にフォルダをドロップできます)

投稿2017/09/22 03:15

x_x

総合スコア13749

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

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

0

onloadとかonerrorとかはイベントですので、そのイベントが起きた際に処理するコードはEventListerとして登録しておきます。
そうすると、onloadとかのイベントが起きた際に実行されます。

Javascrpt: FileReader クラスについて の記事の中の"読み込み完了後に結果を得る"という節で、コードを交えて解説されていますので、詳細はそちらを参考にしてください。

投稿2017/09/21 06:10

coco_bauer

総合スコア6915

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

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

galerius

2017/09/21 06:19

質問の内容に沿っていないように思いました。 おまけにリンク先を見ても得られるものがなく、時間の無駄だったので低評価にさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問