JavaScriptで、ユーザーエージェント別に読みこむCSSを変えたいのですがインターネット上にそういうスクリプトがありません。

具体的には、IE5.5以上とN6以上はstandard.cssを読みこみ、IE5以下やNN4.xはCSSを"読みこまない"というようにするのはどうすればいいのかよくわかりません。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

var newLink = document.createElement('LINK');


newLink.rel = 'stylesheet';
newLink.href = 'スタイルシートのURL';
document.getElementsByTagName('HEAD').item(0).appendChild(newLink);

でLINK要素がHEAD要素に追加されますので、ブラウザ判別のコードと組み合わせれば任意のブラウザ(バージョン)に指定のスタイルシートを適用できます。

#IE5.5とMozilla0.9.3で動作確認しました。


が、Javascriptをオフにしている人はブラウザの種類に関係なくスタイルシートなし、になっちゃいますね(^_^;)

NN4.xだけでしたら、スタイルシートを書くときに

@media screen, print {
ここに書いたスタイルはNN4.xでは適用されない
}

てな書き方で対処できるのですけど。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

QNN4とNN6でのレイヤーの表示・非表示

WINとMACでNN4とNN6でのレイヤーの表示・非表示を制御する、そんな都合の良いJavaScriptってありますか?
あったら教えて下さい!!

Aベストアンサー

以下は、私が使っていたものを、そのまま写しています。

function ShowMessage(mID){
if(document.all) document.all(mID).style.visibility = 'visible';
else if(document.layers) document.layers[mID].visibility = true;
else if(document.getElementById) document.getElementById(mID).style.visib
ility = 'visible';
}

function HideMessage(mID){
if(document.all) document.all(mID).style.visibility = 'hidden';
else if(document.layers) document.layers[mID].visibility = false;
else if(document.getElementById) document.getElementById(mID).style.visib
ility = 'hidden';
}

おわかりだとは思いますが、mIDは、各レイヤーのIDです。
引数にして渡してやってください。

ちなみに、Netscape6.0以降は、document.layersはFALSEになってしまいます。
そこで、document.getElementByIdを使うのですが、これはIE5.0以上でもTRUEになってしまいます。
(だから elseを使っているんですが)

Netscapeは、4.x以前と6.0以降でまったく別物になっているので、
同じ処理はほとんどの場合使えません。
むしろ、6.0はIE5.x以降にかなり近いです。

WINとMACの違いは、ブラウザの細かい仕様とバグに関わってくるので、
あんまり気にしても仕方がないような。。。

以下は、私が使っていたものを、そのまま写しています。

function ShowMessage(mID){
if(document.all) document.all(mID).style.visibility = 'visible';
else if(document.layers) document.layers[mID].visibility = true;
else if(document.getElementById) document.getElementById(mID).style.visib
ility = 'visible';
}

function HideMessage(mID){
if(document.all) document.all(mID).style.visibility = 'hidden';
else i...続きを読む

QNNでは動くのにIEで動かない。

NN4.75、IE5.00という環境で、JavaScriptを使ったHPを作成しています。そのJavaScriptも先日こちらのサイトで教えて頂いたもので(http://www.okweb.ne.jp/kotaeru.php3?qid=135419)、正しく動くと書いてあったのですが、IEでは動きません。
<HTML>
<HEAD><TITLE>フレームなしページ</TITLE>

<SCRIPT language="JavaScript">
<!--
sendURL = "b.html";
function sendData(anc){
sData = escape(anc);
location.href = sendURL + "?" + sData ;
}
//-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#FFFFFF" text="#000000">
<P><A href="#" onClick="sendData('#1')">アンカー1</A></P>
<P><A href="#" onClick="sendData('#2')">アンカー2</A></P>
</BODY>
</HTML>

フレームのないページから、フレームのあるページのそれぞれ特定の場所(#1,#2)にリンクさせるというもので、フレームのないページから抜け出せません。
アドレスの所には、"file:///U:/a.html#"とでます。

これはNNでは、"file:///U:/a.html#"→"file:///U|/b.html?%232"とでてきちんとリンクするのでどこか、プログラムが違ってしまっているのかと、何回も見てみたのですが、わかりません。
教えてください。

NN4.75、IE5.00という環境で、JavaScriptを使ったHPを作成しています。そのJavaScriptも先日こちらのサイトで教えて頂いたもので(http://www.okweb.ne.jp/kotaeru.php3?qid=135419)、正しく動くと書いてあったのですが、IEでは動きません。
<HTML>
<HEAD><TITLE>フレームなしページ</TITLE>

<SCRIPT language="JavaScript">
<!--
sendURL = "b.html";
function sendData(anc){
sData = escape(anc);
location.href = sendURL + "?" + sData ;
}
//-->
</SCRIPT>
</HEAD>
<BODY bg...続きを読む

Aベストアンサー

><P><A href="#" onClick="sendData('#1')">アンカー1</A></P>

http://www.okweb.ne.jp/kotaeru.php3?qid=135419
においてもかかれていますが、
;return false
を足してみてください。

また、href="#"はむしろhref="javascript:void(0);"の方がいいかと。

<P><A href="javascript:void(0);" onClick="sendData('#1');return false">アンカー1</A></P>

#これで動くんじゃないか、とは思うのですが・・・。
#ただ、b.htmlがフレームセットを定義しているHTMLファイルだったら、BODYがないHTML文書のはずで、そのどこかの場所にアンカーでジャンプする、という行為はかなり意味不明で理解できません。

#と、いうことは、きっとloftyさんの意図を理解できていないのだろうなぁ・・・。
#ですので、見当はずれだったらご容赦ください。

><P><A href="#" onClick="sendData('#1')">アンカー1</A></P>

http://www.okweb.ne.jp/kotaeru.php3?qid=135419
においてもかかれていますが、
;return false
を足してみてください。

また、href="#"はむしろhref="javascript:void(0);"の方がいいかと。

<P><A href="javascript:void(0);" onClick="sendData('#1');return false">アンカー1</A></P>

#これで動くんじゃないか、とは思うのですが・・・。
#ただ、b.htmlがフレームセットを定義しているHTMLファイルだったら、BODYがないHTML...続きを読む

QIE6ではjavascriptが動くのにNN7.1では動かない。

”コンピューター家庭向け”のところでも質問したのですが、回答がないのでここで質問させていただきます。

HTML部分
<div class="galico">
<script language="javascript" src="poser.js"></script>
<a href="javascript:showgallery()">
<img src="../base/gallery.gif" alt="">
</a>
</div>

SSC部分
.galico {
z-index: 3;
position: relative;
top: 29px;
left: -200px;
}

javascript部分
function showgallery(){
if ( document.all )document.all('gallery').style.visibility ='visible'
else if ( document.layers )document.layers['gallery'].visibility ='show'
else if ( document.getElementById )document.getElementById('gallery').style.visibility ='visible'
}

この記述で、IE6では思った通りに動いてくれます。("../base/gallery.gif"をクリックするとjavascriptを実行してくれる。)
ところが、NN7.1では "../base/gallery.gif" に触れても、ステータスバーにjavascriptにリンクするように表示もされないし、クリックしても動きません。
なぜかSSCの "position: relative;" を "position: absolute;" にしてやると動くのですが。。。
なぜでしょうか。わかりやすく教えていただけないでしょうか。

”コンピューター家庭向け”のところでも質問したのですが、回答がないのでここで質問させていただきます。

HTML部分
<div class="galico">
<script language="javascript" src="poser.js"></script>
<a href="javascript:showgallery()">
<img src="../base/gallery.gif" alt="">
</a>
</div>

SSC部分
.galico {
z-index: 3;
position: relative;
top: 29px;
left: -200px;
}

javascript部分
function showgallery(){
if ( document.all )document.all('gallery').style.visibility ='visib...続きを読む

Aベストアンサー

再現する為に数値を大幅に変えてます

<html>

<HEAD>

<META http-equiv="Content-Script-Type" content="text/javascript">

<SCRIPT type="text/javascript">
<!--
function showgallery(){
if(document.getElementById){
document.getElementById("gallery").style.visibility ='visible'
}
if(document.all){
document.all["gallery"].style.visibility ='visible'
}
if(document.layers){
document.layers["gallery"].visibility ='show'
}}
//-->
</SCRIPT>

</HEAD>

<BODY>

<div id="Layer1" style="z-index: 3;position: relative;top: 29px;left: 100px;">

<a href="#" onClick="showgallery()">
<img src="../base/gallery.gif" alt="">
</a>
</div>

<div id="gallery" style="z-index: 13;background-color: white;position: relative;top: 121px;left: 0px;width: 710px;height: 500px;visibility: hidden;text-align: left;">
<img src="../base/poservvc2.jpg" alt="">
<img src="../base/ggallery.jpg" alt="">
</div>
</BODY>
</html>

これをこのままコピペしてください
※ その他のものを付けずに とりあえず そのままで
そして実行してみてください
画像をクリックすると、画像が下側に2つ表示されるはずです
お望みの表示になると思います
NN4、IE6、NN7で検証済みです

そこから、元のHTMLに移植、数値の訂正を行ってください
その後、外部スクリプトにすれば問題の発見が早くなります

再現する為に数値を大幅に変えてます

<html>

<HEAD>

<META http-equiv="Content-Script-Type" content="text/javascript">

<SCRIPT type="text/javascript">
<!--
function showgallery(){
if(document.getElementById){
document.getElementById("gallery").style.visibility ='visible'
}
if(document.all){
document.all["gallery"].style.visibility ='visible'
}
if(document.layers){
document.laye...続きを読む

QWinMeのIE5.5で閲覧できない?(WinMeに詳しい方へ)

私はMacユーザーなので助けて下さい。

<http://www.kingserver.ne.jp/~flower/contents/>
でHP編集をしているのですが、OS:WinMe、ブラウザ:IE5.5の一部の方が小窓が開かないとメールをくださいました。
訴えておられる方は4人で全員MeでIE5.5だそうです。ネスケ4.7では問題なく閲覧できるです。
エラー内容は『Webに技術的な問題があるかブラウザの設定が……(以下だらだらと続く)』と表示されるそうです。
ちなみにその方々は全員『JavaScriptを有効にする』にチェックが入っているそうです。
但し、MeでIE5.5の方すべてが閲覧できないわけではなく、閲覧できる方もみえるようです。というか閲覧できる方の方が多いです。
また他のバージョンのOS(Win95,98,2000およびMac)およびブラウザの方は問題ないようです。

JavaScriptで問題があるのかもしれないので、詳しい方にチェックをしていただきたいのです。

またMe+IE5.5の相性などの問題でしたら、閲覧者にはどういった指示を出せばいいのか教えて下さい。
このカテゴリではなく、WinMeのコーナーかもしれませんがよろしくお願い致します。

*管理者様>カテゴリ違いでしたら質問の移動をお願い致します。

私はMacユーザーなので助けて下さい。

<http://www.kingserver.ne.jp/~flower/contents/>
でHP編集をしているのですが、OS:WinMe、ブラウザ:IE5.5の一部の方が小窓が開かないとメールをくださいました。
訴えておられる方は4人で全員MeでIE5.5だそうです。ネスケ4.7では問題なく閲覧できるです。
エラー内容は『Webに技術的な問題があるかブラウザの設定が……(以下だらだらと続く)』と表示されるそうです。
ちなみにその方々は全員『JavaScriptを有効にする』にチェックが入っているそうです。
但し、...続きを読む

Aベストアンサー

ランタイムエラーのことでしょうか?
もう少し情報がないと分からないんですが、
多分、メッセージの通り
Webに技術的な問題がある場合だと思います。

その場合、そのサイトの製作者側が記述ミスなど
、制作ミスですので閲覧者は
メールなどで
「このサイトを見るとエラーが出ます」などと
教えてあげることくらいしかできないと思います。

とりあえず、エラーが出るサイトの管理人さんに連絡してみることをお勧めします・


わたしもあまり詳しくないのでわかんないんですけどね(^^

QIEでCSSを動的に切り替える方法

もう3日間悩んでおりまして、糸口がつかめずご質問させていただきました。
何でも結構ですのでアドバイスいただけましたら助かりますm(_ _)m

【やりたいこと】
IEで画面をリロードすることなくCSSを再読込して適用させる。

【試した方法でIE以外では動いたもの】
http://phpspot.org/blog/archives/2009/08/css_91.html
http://allabout.co.jp/gm/gc/23930/4/

【本当にやりたいこと】
AjaxでPOSTして、戻ってきたページ全体のHTMLを使ってページ全体を上書き更新したい。
それはPOSTすることで画面の表示位置をずらしたくないためです。
IE(6,7,8)以外ではうまくいっていそうです。(FF3、Chromeで確認)
IEだと、CSSが不完全に適用されているようなくずれた画面になるため
CSSを再読込してリフレッシュできたら、解決すると考えたわけです。
検索していると、IEはCSSの動的切り替えに対応していないような記述もあったり。。

よろしくお願いしますm(_ _)m

もう3日間悩んでおりまして、糸口がつかめずご質問させていただきました。
何でも結構ですのでアドバイスいただけましたら助かりますm(_ _)m

【やりたいこと】
IEで画面をリロードすることなくCSSを再読込して適用させる。

【試した方法でIE以外では動いたもの】
http://phpspot.org/blog/archives/2009/08/css_91.html
http://allabout.co.jp/gm/gc/23930/4/

【本当にやりたいこと】
AjaxでPOSTして、戻ってきたページ全体のHTMLを使ってページ全体を上書き更新したい。
それはPOSTすることで画面の表示位置...続きを読む

Aベストアンサー

> それはPOSTすることで画面の表示位置をずらしたくないためです。

ieはhtmlのレンダリングにおいて、firefoxなどから比べて、安定感がまったくありません。
CSSが不完全に適用されている。というのがレンダリングの問題なのか、
スクリプト側の問題なのかは分かりかねますが、

ieでfirefox並の静かなページ書き換えを実現しようとするのはそれなりにハイレベルな要求だと思われます。

最悪、不可能な領域に近いです。

firefoxの様な表示の仕方に近づけるのは難しいので、
ローディング画像を表示させておいて、
画面の構築が完了してからdisplay:block;で表示させるとかの方法では駄目なのでしょうか。


人気Q&Aランキング

おすすめ情報