ブラウザとバージョンによって、使用を制限したいのですが、ブラウザがNetscapeだと .disabled が使用できないみたいなのですが。
今ブラウザ情報の取得も以下のとおりかなり間に合わせ的なもので、もっといいやり方を教えていただけるとうれしいのですが、ちょっと急いでおりますのでご返答のほうよろしくお願い致します。
<!-- ブラウザ情報
document.write('<center><TABLE border="1" align="center">');
document.write("<TD></TD>あなたのブラウザ情報です</TR>");
document.write("<TR><TD>ブラウザ名は</TD><TD>"+navigator.appName+"</TD></TR>");
document.write("<TR><TD>バージョンは</TD><TD>"+navigator.appVersion+"</TD></TR>");
document.write("</TABLE>");
// ブラウザ情報 -->
function GetVer(nvName, nvVer){
var Name;
Name = new String(nvName);
if(eval(Name) != "Microsoft Internet Explorer"){
mainForm.KAI_ACCT.disabled = true;
mainForm.KAI_PASS.disabled = true;
alert("このブラウザには対応していません。IE 5.0以上で使用してください。");
return false;
}else{
var Version;
Version = new String(nvVer);
eval(Version.charAt(22));
if( eval(Version.charAt(22)) < 5 ){
mainForm.KAI_ACCT.disabled = true;
mainForm.KAI_PASS.disabled = true;
alert("このブラウザには対応していません。IE 5.0以上で使用してください。");
return false;
}else{
return true;
}
}
}

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

A 回答 (3件)

antigenさんへ。


「エラーページに飛ぶ」っていうたとえがいけませんでしたね。
私の場合IE、ネスケどっちにも正しく表示させたいので
こういうやり方をしていまいした。
う~ん。確かに利用者の立場からすると勝手に切り替えること
望ましくありませんね。
勉強になりました。御指摘ありがとうございます。

>onloadイベントはいつ来るかわからない
すみません。この事がいまいち理解できませんでした。
onloadイベントハンドラを使用したformなどが読み終えたあと
に動くのでは??と思っていたのですが、、、

ayako328さんへ。
この場で別の方に返事をしてしまいまして。すみませんでした。
    • good
    • 0

フォームをJavaScriptで書き出すことにして出力前にブラウザをチェックしてみてはどうでしょう。



var enale = IsIE5After() ? '' : ' disabled';

var str = '<form name="mainForm"><input name="KAI_ACCT"' + enable + '>' + ...;
document.write(str);

function IsIE5After()
{
 if (!window.navigator || !navigator.appName ||
   navigator.appName != 'Microsoft Internet Explorer') {
  return false;
 }

 var index = navigator.appVersion.indexOf('MSIE ');
 if (index == -1) {
  return false;
 }

 var separator = navigator.appVersion.indexOf(';', index += 5);
 if (separator == -1) {
  return false;
 }

 var version = parseFloat(navigator.appVersion.substring(index, separator));

 return version >= 5.0;
}

ブラウザのチェックはInternet Explorerのコンパチブルブラウザもありえるので、簡単に「document.all」でもいいのかもしれませんね。

var enale = IsIE5After() ? '' : ' disabled';

    ↓

var enable = document.all ? '' : ' disabled';

ただし、どちらにしてもこの方法ではJavaScriptが動作できないとフォームを表示できないことになります。理想はやはりCGIを使うことでしょうか。

それから、正しいかどうかはわかりませんが、経験的にNetscapeでは「mainForm」でフォームを参照することは出来ません。「document.mainForm」としたほうが良いでしょうね。

ついでですが、「document.write(...); document.write(...)」と繰り返すのはパフォーマンスの低下を招きますから、文字列をまとめて書き出すほうが良いでしょう。


makosさんへ

onloadイベントはいつ来るかわからないので、軽いページでなければお勧めできません。それから、Netscapeに対応するしないというのはサイトの意向ですから結構ですが、ブラウザによってエラーページに飛ぶと言うのはいかがなものでしょう。ただ「正常に見られない」ことを伝えればそれで良いのではないでしょうか。なぜなら、訪れた先でピョンピョンとページが切り替わるのを閲覧者はあまり好まないからです。
    • good
    • 0

こんにちは。


私が良くやる方法です。
Onload時にブラウザ判定スクリプトを走らせてると思いますが、
そのスクリプトでブラウザ判定条件によってそれぞれ違うページに
飛ばしてしまう。
ネスケがきたら、エラーのページに飛び、IEが来たら正規のページに飛ぶ。
そんな感じで対応するのはいかがですか?
    • good
    • 0

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

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

Q<td>の中を移動する、外部JavaScript書き出しのdocument.write

質問タイトルの内容が可能なことなのかどうかもわかりません…(TT)
何卒よろしく切にお願い申し上げます…

やりたいことは、2列テーブルの左部分の範囲を
上下に移動する読み込みmenu.jsです。

現在、営業ツールサイトを制作しています。メニュー部分の
更新が頻繁なのですが、なんとなくフレームを使いたくなかったので、
メニュー部分を外部JavaScript(menu.js)のdocument.write書き出し(?)で
読み込むことにしました。

発注者の希望でalign="center"で真ん中寄せしたレイアウトで
テーブル2列の右に営業ツール一覧テーブル、左にmenu.jsを
呼び出しているのですが営業ツール一覧がかなりロングなことに
なってしまいました。そこで、フローターメニュー(?)の様に
スクロールにくっついてくると素敵だ!と思いました。

しかし検索すればするほど、出てくるのは低位置に留まるタイプの
フローターがメイン…。つまりフローターの位置はXYであらかじめ
決まっている感じが…。(というかソースを見て私が理解できたのが
そうゆうタイプのものでした…動きがフェードイン・アウトする
感じのものは理解不可能…)

このまま記述すると、align="center"のテーブルはウィンドウリサイズで
さっさ移動する、駄菓子菓子フロータメニューは頑なにXY値に留まるから
おかしなことになる。

嗚呼、すみません…なんだか混乱してきてしまいました。。。。。。

やりたいことは、align="center"のテーブルに2列の左部分の範囲を
上下に移動する読み込みmenu.jsです!!

不勉強、もしくは検索能力不足ですみません!!!

何卒、何卒宜しくお願い申し上げますっ!!!

質問タイトルの内容が可能なことなのかどうかもわかりません…(TT)
何卒よろしく切にお願い申し上げます…

やりたいことは、2列テーブルの左部分の範囲を
上下に移動する読み込みmenu.jsです。

現在、営業ツールサイトを制作しています。メニュー部分の
更新が頻繁なのですが、なんとなくフレームを使いたくなかったので、
メニュー部分を外部JavaScript(menu.js)のdocument.write書き出し(?)で
読み込むことにしました。

発注者の希望でalign="center"で真ん中寄せしたレイアウトで
テーブル2...続きを読む

Aベストアンサー

テーブル自体をスクロールしないで、メニュー、ツールのみをスクロールするように変更してみました。
No5の書き込みで書いたやつです。(ヘッダーとフッターはoverflowの指定はしていませんが・・・)

ロード時にスクロールバーが必要かどうか判定を行っています。
短いバージョンのメニューと長いバージョンのメニューで試してみてください。

以下ソースです。
<HTML>
<head>
<script type="text/javascript">
//↓メニューおよび営業ツールのスクロールを表示するかどうか
function ViewScroll() {
  MenuWidth = document.getElementById("menu").offsetWidth;
  MenuHeight = document.getElementById("menu").offsetHeight;
  MenuDivWidth = parseInt(document.getElementById("menuDIV").style.width);
  MenuDivHeight = parseInt(document.getElementById("menuDIV").style.height);
  ToolWidth = document.getElementById("tool").offsetWidth;
  ToolHeight = document.getElementById("tool").offsetHeight;
  ToolDivWidth = parseInt(document.getElementById("toolDIV").style.width);
  ToolDivHeight = parseInt(document.getElementById("toolDIV").style.height);
  
  //初期化(スクロールを隠す)
  if (document.all) {
    //IE
    document.getElementById("menuDIV").style.overflowX = "hidden";
    document.getElementById("menuDIV").style.overflowY = "hidden";
    document.getElementById("toolDIV").style.overflowX = "hidden";
    document.getElementById("toolDIV").style.overflowY = "hidden";
  } else {
    //IE以外
    document.getElementById("menuDIV").style.overflow = "hidden";
    document.getElementById("toolDIV").style.overflow = "hidden";
  }
  
  if (MenuWidth > MenuDivWidth) {
    //メニューの幅が、メニューDIVの幅を超えたとき(スクロールを出す)
    if (document.all) {
      //IE
      document.getElementById("menuDIV").style.overflowX = "scroll";
    } else {
      //IE以外
      document.getElementById("menuDIV").style.overflow = "scroll";
    }
  }
  
  if (MenuHeight > MenuDivHeight) {
    //メニューの高さが、メニューDIVの高さを超えたとき(スクロールを出す)
    if (document.all) {
      //IE
      document.getElementById("menuDIV").style.overflowY = "scroll";
    } else {
      //IE以外
      document.getElementById("menuDIV").style.overflow = "scroll";
    }
  }
  
  if (ToolWidth > ToolDivWidth) {
    //ツールの幅が、ツールDIVの幅を超えたとき(スクロールを出す)
    if (document.all) {
      //IE
      document.getElementById("toolDIV").style.overflowX = "scroll";
    } else {
      //IE以外
      document.getElementById("toolDIV").style.overflow = "scroll";
    }
  }
  
  if (ToolHeight > ToolDivHeight) {
    //ツールの高さが、ツールDIVの高さを超えたとき(スクロールを出す)
    if (document.all) {
      //IE
      document.getElementById("toolDIV").style.overflowY = "scroll";
    } else {
      //IE以外
      document.getElementById("toolDIV").style.overflow = "scroll";
    }
  }
}

</script>
</head>
<!--ロード時にスクロールバーを表示するかどうかを決定-->
<body onLoad="ViewScroll()">

<table width="750" border="1" cellspacing="0" cellpadding="0" align="center" bgcolor="#909090">
<tr>
<td colspan="3" align="center" valign="top" bgcolor="00ff00">
    ヘッダーをJavascriptで呼んできてます。
</td>
</tr>
<tr>
<!--テーブルに高さをつけました。サイズは適当に変えてください-->
<td align="left" valign="top" width="230" height="500">
<!--DIVに高さと幅ををつけました。サイズは適当に変えてください(メニューテーブルと同じサイズにしてください)-->
<div id="menuDIV" style="top:0px; left:0px; width: 230px; height: 500px; position:relative; background-color: #ff0000; overflow: scroll;">
<!--スクロールバーを表示するかどうか判定するためにもうひとつDIVをはさみました-->
<div id="menu">
メニューをJavascriptで呼んできてます。
どっこい多分ここで呼ぶmenu.jsのテーブルが長いのか、
スクロールするとなぜか底なし沼になります…
</div>
</div>
</td>
<td width="10"></td>
<!--テーブルに高さをつけました。サイズは適当に変えてください。-->
<td align="left" valign="top" width="505" height="500">
<!--DIVに高さと幅ををつけました。サイズは適当に変えてください(ツールテーブルと同じサイズにしてください)-->
<div id="toolDIV" style="top:0px; left:0px; width: 505px; height: 500px; position:relative; background-color: #ffff00; overflow: scroll;">
<!--スクロールバーを表示するかどうか判定するためにもうひとつDIVをはさみました-->
<div id="tool">
<!--↓のDIVは営業ツールの高さ10000ピクセルにするために名義的に入れているもので、削除してください-->
<div style="height: 10000px">ここにローングな営業ツールが入ってます。</div>
<!--↑のDIVは営業ツールの高さ10000ピクセルにするために名義的に入れているもので、削除してください-->
</div>
</div>
</td>
</tr>
<tr>
<td colspan="3" align="center" valign="top" bgcolor="#0000ff">
    フッターをJavascriptで呼んできてます。
</td>
</tr>
</table>
</body>
</HTML>

テーブル自体をスクロールしないで、メニュー、ツールのみをスクロールするように変更してみました。
No5の書き込みで書いたやつです。(ヘッダーとフッターはoverflowの指定はしていませんが・・・)

ロード時にスクロールバーが必要かどうか判定を行っています。
短いバージョンのメニューと長いバージョンのメニューで試してみてください。

以下ソースです。
<HTML>
<head>
<script type="text/javascript">
//↓メニューおよび営業ツールのスクロールを表示するかどうか
function ViewScroll() {
...続きを読む

Q

▼次のようにページ内のdivタグのidの名前によって、formタグ内の要素をdisableにすることはJava scriptによって可能でしょうか?

<div id="AA">のとき、別の場所にある<form id="BB">内のselect要素などすべての要素をdisableにする。

また同時に、id="BB"に指定したスタイルシートの記述を書き換えることは可能でしょうか?

何かよい方法をご存知でしたら教えてください。よろしくお願いいたします。

Aベストアンサー

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として使わない方が良いです。
つまり、
id="soldout"の時に
var soldout;という風にはしない方が良いです。
同じでなければ、cartFormでもなんでもかまいません。
あと、scriptは、
<!--
(スクリプトの中身)
//-->
のように
<!--
//-->
で囲むようにします。

getElementById
は、ブラウザやのブラウザのバージョンによっては使えないことがあります。
その場合は、使えるかどうかを調べる必要があります。

<script type="text/javascript">
<!--
function stockStatus (num){
var f=document.getElementById("soldout");

if(f!=null){
for (var i =0; i<=f.length -1 ;i++){
f.elements[i].disabled=num;
}
}
}
//-->
</script>

>なぜか時々エラーが出ます。
ウチでちょっと試した程度ではエラーが発生しませんでした。
できましたら、発生したときのメッセージや場所また、ブラウザの種類なども教えてください。

以下は、予防的な意味での注意点についてちょっと書きます。
>return false;

は、必要ないです。
書かない方がいいと思います。
==nullの場合の処理が必要ないなら
!=nullにすればよいです。
もしくは
return false;でなくて
;
のように空文でもよいです。
あと、idに使っている名前と同じ名前を変数名として...続きを読む

Q特定内の
の色を変える

お世話になります。
特定<table>内の<td>の色を変える
<table id="abc">
<tr>
<td>あああああ</td>
<td>いいい</td>
<td>ううう</td>
</tr>
</table>
<table>にはidを定義します。
その<td>タグにはidを定義していません。
このとき、あああああ、いいい、うううの表示色を
<input type="button" value="色を変える" onClick="ChngColor()">

なんてことで、
マウスをクリックすることにより変更できないものでしょうか。
よろしくお願いいたします。

Aベストアンサー

#1さんへの補足より――

> functio ChngColor(){
> var Obj=document.getElementById('abc');
> Obj=document.getElementsByTagName("td");
> for (var i=0;i<Obj.length;i++){
> Obj.style.color="red";
> }
> }

特に3行目がいけない。こう変えましょう。
(あと、詰めすぎは見づらいので、適当に空白を入れました)

function ChngColor() {
var Obj1 = document.getElementById('abc');
var Obj2 = Obj1.getElementsByTagName("td");
for (var i = 0; i < Obj2.length; i++) {
Obj2[i].style.color = "red";
}
}

Qの違い

現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

具体的には
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
<script type="text/javascript">
function show() {
}
</script>

こんなソースを書いていましたが、showメソッドが認識されていませんでした。

そこで
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"></script>
とかくと、後ろのメソッドも認識されました。

ここで疑問なのは</>と</script>の違いです。
この2つは何がちがうのでしょうか?

現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

具体的には
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
<script type="text/javascript">
function show() {
}
</script>

こんなソースを書いていましたが、showメソッドが認識されていませんでした。

そこで
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1...続きを読む

Aベストアンサー

https://www.google.com/search?q=HTML+%E7%A9%BA%E8%A6%81%E7%B4%A0
違いっていうか。
<hoge />って書いていいのは「何もはさまないタグ」だけ。<img><link><br>…
<script>は、確かにsrc属性を設定すれば何もはさまなくはなりますが、「はさまないタグ」ではないから「/>」で終わることはできない。<img /> を<img></img>にすることはできるが逆はできません。

試してないから分からないが、質問文の記述では最初の間違ったタグが開始タグとして認識され以降3行がスクリプトとして認識され、結果文法エラーとなっているのでは。というか、その書き方でほかの部分のソースの解釈に影響出てないんですか?


人気Q&Aランキング

おすすめ情報