anti scroll

ブラウザと小説の新しい関係を模索する

いつの間にかFileAPIのreadAsBinaryStringがオワコンになっていた。今後はreadAsArrayBufferで。

タイトルで全てを言い尽くしてしまいましたが、経緯をば。

不具合報告で「IEで画像のアップロードができない」ってのがあったので調査してみたら、readAsBinaryStringでコケてました。

調べてみると、どうもIE系列ではreadAsBinaryStringそのものが存在しないらしく…

なんでなのかというと、そもそもこのAPI、将来的になくなる方向らしいのです(実際にw3cのドキュメントからも消えてる)。

というわけで、readAsBinaryStringreadAsArrayBufferに置き換えたら、IE11でも(もちろんChrome/Firefoxでも)問題なく動いたのですが…

非推奨になった理由

で、なんで非推奨となったのかというと、単に効率が悪いからだそうで。

https://lists.w3.org/Archives/Public/public-webapps/2011OctDec/1497.html

要約すると「このメソッドは型付きの配列(ArrayBuffer)が標準化される前に作られた実装で、バイナリデータを文字列に変換するから効率が悪い」とのこと。

今は型付きの配列は既に実装されていて、それを読み取る関数(readAsArrayBuffer)も実装済み。したがって、非効率的な古いAPIに存在意義はない(から削除するべきだ)、ということみたいです。

というわけで、これからはreadAsArrayBufferなのです。

Blobを作らなくても、fileオブジェクトならそのまま渡せます。