SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

クロスブラウザスクリプトの作成テクニック

ブラウザに合わせたスクリプトを実行する

クロスブラウザスクリプトの作成テクニック 第4回


  • X ポスト
  • このエントリーをはてなブックマークに追加

今回は、JavaScriptを使ってブラウザの種類やバージョンを判断し、実行するスクリプトを変える方法を、実例を挙げながら解説しています。具体的には、ユーザエージェントから使用されているブラウザを判断し、各ブラウザ用のページへ遷移させるスクリプトについて解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 ブラウザの種類やバージョン、各々のブラウザ独自の実装の違いを考慮し、同じように動作するスクリプトを、クロスブラウザスクリプトと言います。本連載では、クロスブラウザスクリプトを実現する方法について順を追って解説します。

 クロスブラウザスクリプトを作る上で、それぞれのブラウザがどのJavaScriptをサポートしているかを知ることは大切です。さらに、それを知った上で、そのスクリプトが実行されるブラウザの種類やバージョンを特定することが、すべての基本となり、最も重要な事柄の一つになります。

 前回、『ユーザエージェントからブラウザの種類やバージョンを判断する』では、JavaScriptに対応した主なブラウザがサポートしているJavaScriptを明確にしました。そしてさらに、ブラウザの種類やバージョンに関しては、ブラウザ自身の素性を表すユーザエージェントを元に、どのブラウザがどのようなユーザエージェントを持っているか、ブラウザが発展してきた経緯と共に解説しました。

 今回は、前回までの事柄を元に、JavaScriptを使ってブラウザの種類やバージョンを判断し、実行するスクリプトを変える方法を、実例を挙げながら解説していきたいと思います。

 今回は、前回解説した内容をふまえて解説を進めて行くことになります。前回の内容も併せて参照するようにしてください。

ブラウザの種類を判断するスクリプト

 それでは、ブラウザの種類を判断するスクリプトを見てみましょう。

 JavaScriptがサポートされたのは、Netscape Navigatorではバージョン2から、Internet Explorerではバージョン3からとなります。また、それ以外のJavaScriptをサポートしているブラウザで一般的なものには、Netscape Navigatorから派生したMozilla、Firefoxをはじめ、OperaやSafariなどがあります。これらのブラウザを判断するスクリプトは、次のようになります(このスクリプトの「○○用スクリプト」の箇所に、それぞれのブラウザ用のスクリプトを設定します)。

ブラウザの種類を判断するスクリプト
if(navigator.userAgent.indexOf("MSIE") == -1){
    if(navigator.userAgent.indexOf("Mozilla/2") != -1)
        {Netscape Navigator2.X用のスクリプト}
    if(navigator.userAgent.indexOf("Mozilla/3") != -1)
        {Netscape Navigator3.X用のスクリプト}
    if(navigator.userAgent.indexOf("Mozilla/4") != -1)
        {Netscape Navigator4.X用のスクリプト}
}
if(navigator.userAgent.indexOf("Mozilla/5") != -1){
    if(navigator.userAgent.indexOf("Safari") != -1)
        {Safari用のスクリプト}
    else{
        if(navigator.userAgent.indexOf("Netscape6/") != -1)
            {Netscape Navigator6.X用のスクリプト}
        else{
            if(navigator.userAgent.indexOf("Netscape/7") != -1)
                {Netscape Navigator7.X用のスクリプト}
            else{
                if(navigator.userAgent.indexOf("Netscape/8") != -1)
                    {Netscape Navigator8.X用のスクリプト}
                else{
                    if(navigator.userAgent.indexOf("Firefox") != -1)
                        {Firefox用のスクリプト}
                    else{Mozilla用のスクリプト}
                }
            }
        }
    }
}
if(navigator.userAgent.indexOf("MSIE") != -1){
    if(navigator.userAgent.indexOf("Mozilla/2") != -1)
        {Internet Explorer3.X用のスクリプト}
    if(navigator.userAgent.indexOf("Mozilla/3") != -1)
        {Internet Explorer3.X用のスクリプト}
    if(navigator.userAgent.indexOf("Mozilla/4") != -1){
        if(navigator.userAgent.indexOf("Opera") != -1)
            {Opera用のスクリプト}
        else{
            if(navigator.userAgent.indexOf("MSIE 6") != -1){
                if(navigator.userAgent.indexOf("SV1") != -1)
                    {Explorer6.X SP2用のスクリプト}
                else{Internet Explorer6.X用のスクリプト}
            }
            else{
                if(navigator.userAgent.indexOf("MSIE 5") != -1)
                    {Internet Explorer5.X用のスクリプト}
                else{Internet Explorer4.X用のスクリプト}
            }
        }
    }
}

 このスクリプトでは、ユーザエージェントの値に「Mozilla/2」「Mozilla/3」「Mozilla/4」を持つブラウザのうち、Safariを含めたNetscape Navigator系のブラウザか、Operaを含めたInternet Explorer系のブラウザのどちらであるかは、ユーザエージェント内にInternet Explorerを表す文字列である「MSIE」があるかで判断しています。

 また、以下に挙げる、ユーザエージェントの情報と実際のブラウザのバージョンが異なる点も考慮しています。

  • バージョン6以降のNetscape NavigatorやMozilla、Firefox、Safariのユーザエージェントのバージョンを表す値が、実際のバージョンと異なる「Mozilla/5」であること。
  • 一部のInternet Explorer 3.Xが、バージョン2を示すような値を持っていること。
  • バージョン5以降のInternet ExplorerやOperaのバージョンを表す値が「Mozilla/4」であること。

 さらに、このスクリプトでは、ユーザエージェント内に文字列「SV1」があるかどうかで、Windows XP SP2であるかも判断しています。

 次に、このスクリプトを実際に利用したサンプルを見てみましょう。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ブラウザの種類をフォームに書き出す

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
クロスブラウザスクリプトの作成テクニック連載記事一覧

もっと読む

この記事の著者

半場 方人(ハンバ マサヒト)

Netscape2.XでJavaScriptに初めて出合ったころ、「なぜJavaScriptの日本語の書籍が無いんだ」、とあちこちで嘆いていたら、じゃあおまえが書け、とお声がかかり、JavaScript関連の書籍を執筆するようになる。執筆に際していつも考えるのは、「JavaScript初心者だった頃の気持ちを忘れないよに」、ということ。主な著書は、「標準Webデザイン講座 JavaScript&Ajax」(翔泳社)などがある。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/427 2010/01/05 11:02

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング