記事一覧

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さんは平気で約束をすっぽかしたりするズボラなブラウザということがよく分かりました。

ライセンス的に問題ないWebフォントをサーバにアップロードし、cssで読み込むように指定しました。

@font-face {    font-family: "hogeFont";    src: url("../hogefont/hogefont.otf") format("opentype");}font-family: "hogeFont";

すると、IE(IE11)だけ指定したフォントで表示されません。試しにF12でコンソールを開いてみると、次のエラーメッセージが表示されていました。

@font-face で OpenType の埋め込みアクセス許可チェックに失敗しました。アクセス許可は Installable である必要があります。

見たことのないエラーだったので調べてみました。

Webフォント自体は対応しているようです。では、エラーメッセージで検索すると……

どうやらIEで使用できるように変更を加えるソフト(Truetype embedding-enabler)を使用して、ファイル自体に変更を加える必要があるようです。

しかし、Windows10では動かず……。互換モードで動かせば動くかもしれませんが、ちょっと試すのは怖いですね……。

IEはやはり手間取らせるのか……。

Google Maps JavaScript APIでサポートされていないブラウザを使用しています。ブラウザの変更をご検討ください。

とあるサイトで、

Google Maps JavaScript APIでサポートされていないブラウザを使用しています。ブラウザの変更をご検討ください。

というメッセージが画面上部に表示され、Googlemapが開かないという症状に遭遇しました。Windowsマシンで、IE11とのこと。

「IE11ならば問題ないはず……」と訝しんで検索すると

注: Internet Explorer の互換表示には対応していません。

……これか!

確かに、該当するサイトは少し前のサイトなので<meta http-equiv="X-UA-Compatible" content="IE=edge">を入れていないことを思い出しました。

試しにこれをGooglemapを表示しているページに入れたところ、冒頭のメッセージは表示されず、きちんとマップも表示されるようになりました。

一方、現象が発生したマシンの環境を調べてみると……案の定、互換表示設定を施してあり、該当サイトがIE7モードで表示されていました。なんでこんな設定に……。

Windows8.1のIE11でGyaoの動画が視聴できない、というトラブルに遭遇。

  • IE11のバージョンは最新(Windows Updateも確認したが、更新はなし)
  • アドオンの管理でFlash Player(ShockWave Player)、Microsoft Silverlightは有効になっている

といった状態で、他のマシン(OS, IE, Flash, Silverlight、いずれのバージョンも同じ)では閲覧できる、という困った状態でした。

とりあえず「特定サイトが閲覧できない」ということなので、何かサイト側でエラー出てないか、F12でIE11の管理者ツールを起動、コンソールを見てみます。すると

アクセスが拒否されました。

というエラーメッセージが。出ているのは、windwow.storageにアクセスする部分。なるほど、サイトからマシン上のlolalStorageにアクセスしようとして権限(またはlocalStorageの保存ファイルが壊れてるなどの理由で)で拒否されている、と。これをどうにかできれば、改善できそうです。ということで「localStorage アクセスが拒否されました IE11 Windows8.1」といったキーワードで検索。

ありました。ということで、コマンドプロンプトを管理者で実行、

> icacls %userprofile%\AppData\LocalLow /t /setintegritylevel (OI)(CI)L

を実行し、ついでにIEの履歴も削除します。これでIE自体を一度閉じて、もう一度起動。どうだ。……閲覧できました!

ということで、解決。これはサイトの仕様とマシンの環境の両方が絡んだトラブルなので、嵌まると厄介ですねー。