-PR-
解決
済み

CSSをブラウザ別に振り分ける方法

  • すぐに回答を!
  • 質問No.67642
  • 閲覧数463
  • ありがとう数3
  • 気になる数1
  • 回答数2
  • コメント数0

お礼率 75% (12/16)

JavaScript初心者で、ソースは本に載っていたものをそのまま使っているのですが、その本だと、MAC、WIN-IE、WIN-NSの3つの外部スタイルシートを読み込ませるスクリプトしか載っていないので、困っています。
MACでも、IE、NS両方とも振り分けたいんです。
今使っているソースは以下です。
このファイル自体は、フレームセットファイルでフレームを切った中のファイルなのですが、フレームセットファイルにも<script language="JavaScript">以降の記述は必要なのでしょうか?
必要な場合は、どのようにして記述したら良いか教えて下さい。
よろしくお願いします。

<HTML>
<HEAD>
<!--?-->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
<TITLE></TITLE>
<script language="JavaScript">
<!--
mac=(navigator.appVersion.indexOf("Mac")!=-1)?true:false;
ie=(navigator.appName.charAt(0) == "M")?true:false;
ns=(navigator.appName.charAt(0) == "N")?true:false;
if (mac) {
fName = "mac.css";
}
else {
if (ie) {
fName = "win_ie.css";
}
else if (ns) {
fName = "win_ns.css";
}
}
if (fName != null) {
document.write("<LINK REL=STYLESHEET HREF='"+fName+"' TYPE='text/css'");
}

//-->
</script>
</HEAD>
通報する
  • 回答数2
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル11

ベストアンサー率 61% (157/255)

var agt=navigator.userAgent.toLowerCase();
var nav=navigator.appName.charAt(0);
var fName;
if (agt.indexOf("mac")!=-1)
{
// mac
if(nav=="M") fName = "mac_ie.css";
if(nav=="N") fName = "mac_ns.css";
} else
if (agt.indexOf("win")!=-1)
{
// win
if(nav=="M") fName = "win_ie.css";
if(nav=="N") fName = "win_ns.css";
} else
{
// ?? 他のOS
}

if (fName != null) {
document.write("<LINK REL=STYLESHEET HREF='"+fName+"' TYPE='text/css'");
}
補足コメント
eggchoco

お礼率 75% (12/16)

kokucho81さん、ありがとうございます。助かりました。
さっそく試したところ、無事振り分けることができました。

でも、一つ問題があるのです。
このスクリプトを記述したファイル自体をMACのNS4.7で表示させると
ちゃんとスタイルシートは読み込まれるのですが、
フレームセットファイルの一フレームとして読み込むと、
スタイルシートを読み込んだり読み込まなかったりします。
読み込まない場合の方が多いです。
フレームセットファイルには、特別なことは記述していません。

対応策をご存じでしたら是非教えていただけると嬉しいです。
よろしくお願いします。
投稿日時 - 2001-04-24 21:10:58
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル11

ベストアンサー率 61% (157/255)

フレーム使用時の読みこみのタイミング等については、NS4系はバグっています。 読みこみだけではなく、フレームのピクセル指定などもNS4はバグっていまして、 はっきりいうと、あまりまともに相手にするのは止めた方が良いと言うように思います。 あと、CSSを分けて、それをJSで読みこむと言うよりは、CSS.JSというファイルをひとつ用意して、そのJSの中で、ユーザーエイジェント(ブラウザ+OS)に沿っ ...続きを読む
フレーム使用時の読みこみのタイミング等については、NS4系はバグっています。
読みこみだけではなく、フレームのピクセル指定などもNS4はバグっていまして、
はっきりいうと、あまりまともに相手にするのは止めた方が良いと言うように思います。

あと、CSSを分けて、それをJSで読みこむと言うよりは、CSS.JSというファイルをひとつ用意して、そのJSの中で、ユーザーエイジェント(ブラウザ+OS)に沿ったCSSを吐いた方が、安定した動作が期待できるように思います。
(このときも、document.writeを連発すると、またまた、NSでバグるので、できるだけ、var s="" s+=~; s+=~; とどんどん文字列を連結して、最後に一度だけ、document.writeするのが常套手段です。とにかくNS4は無茶苦茶なのですぐバグるのです。)

まぁ、全体のアクセスの中で、何%ほどMACのMS4系ユーザーがいそうか、一度お調べになって、1日1人とかであれば、それを相手にするよりはコンテンツを充実させた方が総合的には良いでしょう。
お礼コメント
eggchoco

お礼率 75% (12/16)

ありがとうございました。
これで諦めがつきました。
MACのNS4系のユーザー対応にやっきになるのはやめようと思います。
もっと勉強してCSSのこと、JavaScriptのことを理解できるようになってから
また悩もうと思います。
投稿日時 - 2001-04-25 11:42:10


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ