記事

Promiseを使った処理をIE11で流そうとしたら怒られた

Barba.jsを使ったデモを作って、IEで動作確認したら……動かない。

エラーメッセージは以下の通り。

Possible Unhandled Promise Rejection: TypeError: 未定義または NULL 参照のプロパティ ‘isWebKit’ は取得できません

Unhandled Promiseというところが引っかかりますね。「IEさんもしかしてPromise使えないとか?」と思って検索。

案の定、ES6のPromiseは使えないと来ました。やっぱりか。「えーマジPromise使えないの!?」「Promise使えないのが許されるのはNetscapeまでだよねー」という感じです。

回避策としては次の通り。

  1. ブラウザ判定して逃げる(そもそもBarba.jsを動かさない)
  2. Polyfill
  3. Babel

PolyfillとBabelは似たような感じですが、BabelだけがPolyfillではないですし、BabelはBabelで有名すぎるので気分的に別枠にしたいところ。

結局数種類のPolyfillを試してダメで、本家Barba.jsのSampleに上がっているサイトもIEだけはそれっぽいアニメーションでお茶を濁したり、全く違う動作をしていたりしていて「あ、これは根本的にダメくさい」と悟ったので諦めました。IEさんは平気で約束をすっぽかしたりするズボラなブラウザということがよく分かりました。

記事一覧に戻る