アプリ版:「スタンプのみでお礼する」機能のリリースについて

ブラウザとバージョンによって、使用を制限したいのですが、ブラウザが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;
}
}
}

A 回答 (3件)

こんにちは。


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

antigenさんへ。


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

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

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

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