今回はPHPでブラウザを判別して処理を切り分ける方法をご紹介します。
※PHPに関しては乏しい知識の為ご指摘歓迎です。

lightbox.jsとFlickrの共存

先日巷でだいぶ前に話題のlightbox.jsを導入しました。
lightboxとはサムネイルもしくはリンクをクリックすると、オーバーレイして表示されるというものです。

美味しそうなケーキ
マシュマロチェア

ページの読み込みが終わってから↑の画像をクリックして見て下さい。

リニューアルに伴い同機能ははずしました

どうやらページの読み込みが完了しないとJavaScriptがしっかり機能しないようです。

導入はMovableType備忘録: サムネイルをLightbox JSで表示してみるを参考にして順調に進みました。

lightbox.jsの設置が完了してテストを行ってみるとFireFoxでは問題無く閲覧できました。

良い感じ。

続いてIEへ・・・。うまく動作しません。ページの読み込みに注意し何度トライしてもだめ。

こんな時JavaScriptいじれれば少しは解決が早いのかも知れません。
とりあえず他のScriptが干渉してうまく動かないというのが一番濃厚なので順次テスト。

見つけました。左カラムに設置しているFlickr、これはJavaScriptで読み込んでいます。
こやつを外すとうまく機能します。

対処法の検討

さすがにJavaScriptをいじり倒して共存させるテクニックはありません。(勉強します。)

Flickrを外すにしてもこのブログ唯一の動的コンテンツなのでなんだか嫌。

そこで閃きました。IEだけFlickrを非表示にすると。

最近PHPの勉強をしてまして、PHPでブラウザを判定して処理を切り分ける変更を行いたいと思います。

PHPコードの記述

以下が今回使用しているPHPです。

<?php
     $HTTP_USER_AGENT = getenv( "HTTP_USER_AGENT" );
     /*  環境変数 HTTP_USER_AGENT を見て、正規表現のマッチングをする(ereg)*/
     if( !ereg( "MSIE", $HTTP_USER_AGENT )  ) {
         require_once( "<$MTBlogSitePath$>flickr.php" );
     }
?>

getenv( "HTTP_USER_AGENT" );で環境変数からUSER_AGENTを取得しています。

getenv関数は環境変数の値を取得する関数です。

取得した値を変数に格納し、その変数の中にMSIEという文字列があるかereg関数で判定しています。

参照元:@もぐりん PHPのお勉強->正規表現

!eregで否定文に変更し、MSIEの文字列が無い場合に
require_once関数で読み込みたい外部ファイルを指定しています。

うまく処理は完了しましたし、PHPを書く勉強にもなりました。

もう少し勉強してJavaScriptもいじれるようになります。

こういう風に実際に動かすとPHPも面白いですね。

090118追記

ブラウザ判別系で以下のような記事も書きましたので合わせてどうぞ。

PHPを使ってブラウザ毎に「お気に入りに追加」ボタンを表示するサンプル

このエントリーをはてなブックマークに追加 この記事をクリップ! Yahoo!ブックマークに登録 この記事をdeliciousにブックマーク
Tumblr
2007年7月24日

このエントリーのトラックバックURL:

コメント

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)




太字 イタリック アンダーライン ハイパーリンク 引用

caraldo_K

Webディレクター的な事やってます!iPhone楽しい!マラソン・ロードバイクで肉体改造計画中!でも一番好きなのは漫画です㌰㌰⋋( 'Θ')⋌㌰㌰

poooooon

俗に言うWeb屋の人。馬車馬のように働きお休みがありません。いつか目の前に天使ちゃんが舞い降りてきてくれるのではないかと妄想を膨らませる毎日。

Our tweets
Loading..
Facebook caraldo.net公式ページ

POWERED BY MT4