【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

ブラウザによるCSSの切替スクリプトを作りましたが上手くいきません。
====css.js======================================================
function browserCheck(){

//変数myBrowにユーザの環境を代入
myBrow = navigator.userAgent;

//変数myBrowに文字列Operaが入っていた場合(Opera)の処理
if (myBrow.match(/Opera[\/\s](\d\.\d+)/))
    document.write("<link rel="stylesheet" type="text/css" href="Opera.css" charset="Shift_JIS">"); //Operaの処理

//変数myBrowに文字列MSIEが入っていた場合(IE)の処理。
//Operaにも文字列MSIEが入っているため、Operaの処理の後に行います。
else if (myBrow.match(/MSIE (\d\.\d+)/))
    document.write("<link rel="stylesheet" type="text/css" href="MSIE.css" charset="Shift_JIS">"); //MSIEの処理

//変数myBrowに文字列Firefoxが入っていた場合の処理。
else if (myBrow.match(/Firefox[\/\s](\d\.\d+)/))
    document.write("<link rel="stylesheet" type="text/css" href="Firefox.css" charset="Shift_JIS">"); //Firefoxの処理

//変数myBrowに文字列Netscapeが入っていた場合の処理。
else if (myBrow.match(/Netscape[\/\s](\d\.\d+)/))
    document.write("<link rel="stylesheet" type="text/css" href="Netscape.css" charset="Shift_JIS">"); //Netscapeの処理

//上記以外の処理
else myBrow = "unknown"; //それ以外のブラウザ
    document.write("<link rel="stylesheet" type="text/css" href="unknown.css" charset="Shift_JIS">"); //それ以外のブラウザの処理
}
================================================================
<html>
<head>
<script language="JavaScript" src="css.js"></script>
<Script language="JavaScript"><!-- browserCheck(); //--></Script>
</head>
</html>

どこか間違っているでしょうか?
ご回答、宜しくお願い致します。

A 回答 (2件)

if (myBrow.match(/Opera[\/\s](\d\.\d+)/)){


    document.write('<link rel="stylesheet" type="text/css" href="Opera.css" charset="Shift_JIS">');}

確かこんな書き方だった様な、気がします。

この回答への補足

ご回答ありがとうございます。
ダメです、出来ませんでした。

補足日時:2007/03/22 00:25
    • good
    • 0
この回答へのお礼

出来ました。どうもありがとうございました。

お礼日時:2007/03/22 01:03

感染の余地があると思ったので締め切られているところにあえて割り込むような形で回答させていただきます。


(質問者が追加依頼を出さない限り)絶対にポイントがもらえないからあんまり得じゃないんですけどねぇ^^;

で、スクリプトについてなのですがUserAgent判定は時々不具合を起こします。
例えばOperaが一番最初に来ているのはUA偽装でもOperaという文字列が残るからでしょうが、
設定を変えれば完全にIEやFirefoxとして判別することが出来るため不具合の出ることも予想されます。

通常のUA偽装
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja) Opera 9.10
完全にUA偽装
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ja)

また、NetscapeとFirefoxは源流が同じものであり、両者ともGeckoというブラウザエンジンを使用しているためバージョンの古い新しいと言う問題を除けば表示はほぼ同一です。
さらに、NSやFx以外にもGeckoを使用したブラウザは多数存在するし、Firefoxでも次期版の開発版はUAにFirefoxという文字列を出力しません。
(Geckoを使用したブラウザの例として他にMozillaやSeaMonkeyなどが上げられますし、他にもWindows限定のSyleraやMac OS X限定のCaminoなんていうのがあります。)
この場合はNSやFx以外のユーザー、またFx開発版などのユーザーに設定変更を強いることとなり、嫌がられることもあるようです。
(いつ何処で誰がどういうブラウザを使っているかと言うのは分からないものです。)
http://okwave.jp/qa2841265.html
(ANo.8のhimajin100000さんの回答を参考)

UserAgentのみを持ってブラウザの種類を判別するのはいろいろと問題があるので、
下記アドレスのANo.3でmatumomusiさんが回答されている内容を参考にしてみてください。
UaerAgent判定からすれば判定の精度が大幅に上昇するだけでなく、サポート可能な環境もかなり増えます。
http://okwave.jp/qa2639629.html

ちなみに、このQ&Aに上がっているAppleWebKitというのはMacintoshのSafariなどで使われているブラウザエンジンのことです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報