NeGiMeMo.net

ねぎさんのメモ帳。日常・メモ・ときどきWordPress。

IE7ではBJ Lazy Load を効かなくする

bell賞味期限切れコンテンツ

この記事は公開または最終更新から596日くらい経過しています。
このメッセージが表示されている記事(特にプログラミング系)は情報が古くなっている可能性があるので注意して下さい。

BJ Lazy Load 等の Lazy Load 系プラグインって、画像を base64 エンコードしてるんですね。
今回の件でいくつか似たプラグイン試したんですがどれも同じ所でひっかかってたのできっと基本構造がそういう感じなんでしょうね。

で、SSL環境でつかってると、この base64 エンコーディングのせいで IE7 がセキュリティ警告出しまくるもんだから[*1] どうしたもんかと思い、フォーラム読んだり、プラグインの中身覗いたりしてようやくIE7だけ無効にする方法を見つけたのでメモです。

こんなかんじでやればいけます。

前半は UserAgent から IE7 判定を行う関数で、後半が BJ Lazy Load のフィルターを無効化する部分です。

UAによるブラウザ判定はちょいちょい見かけますね。今回はこちらを参考にさせてもらいました。

ユーザーエージェントでブラウザの判別をするPHPとかjQueryを書いてみた。 | Toro_Unit

後半部分はプラグインの中身を読んでみて、どうやら bj_lazy_load_run_filter ってとこでフィルターを掛けるかどうかを決めているっぽいってのを見つけたんで、IE7のときは強制的に false になるようなフィルターフックを書いてます。

今回はブラウザ判定と、無効化処理を別々にしてますが、まぁまとめちゃってもOKかもしれません。

ただ、IE7はちょいちょいトラブルがあるんで他の部分での切り分けにも使えると思いますので分けておいたほうがのちのち便利かもしれません。

他のIEも視野に入れる場合は、参考サイトのそれのようにIEのバージョンを返すような関数にして、戻り値で振り分けたほうがもっと便利ですね。

と、いうわけでこれでなんとかエラー地獄からは脱しました…が、当然読み込みはちょっと重くなりますね。LazyLoadオフったんで仕方ないですけどね。

 

TAGS