if(navigator..から全対象への回帰?

[上に] [前に] [次に]
まっちゃん 1999/03/17(水) 02:24:50
なんか初歩的なことでスミマセン..

document.write("hoge");

       if(navigator.appVersion.charAt(0) >= 4 && navigator.appName.charAt(0)=="N") {
               window.onerror=null;
               document.write("nn");
                               }

       if(navigator.appName.charAt(0)=="M") {
               window.onerror=null;
               document.write("ie>");
                               }

document.write("bye");

ということで、どちらのブラウザでも bye を書き出したいとき、
かつ、
分岐スクリプト内にdocument.write("bye");
を格納したくないとき、
どういう文法にすればといのでしょう....

お助けくださいませ。

Nobu3 1999/03/18(木) 14:06:10
意図は良くわかりませんが、
「NN4以降とIEの時に bye を書き出したい」のでしょうか?
もしそうなら、

nn=false;
ie=false;

を最初に書いて、
NNの分岐には nn=true;
IEの分岐には ie=true;
を書いて、最後に

if(nn||ie)document.write("bye");

を書いたらいいと思います。
これも、分岐させているので望みどおりではないと思いますが・・・
また、やりたい事も違ってるかもしれません・・・

匿名希望 1999/03/18(木) 16:14:42
Nobu3さんの回答と同じ解釈ですが,
document.write("hoge");

nn = (navigator.appVersion.charAt(0) >= 4 && navigator.appName.charAt(0)=="N");
ie = (navigator.appName.charAt(0)=="M");

if (nn || ie ){
  window.onerror=null;
  if (nn) {
    document.write ("nn");
    } else {
    document.write ("ie");
  }
  document.write("bye");
}

という形にすると若干見た目すっきりになるかもしれませんね ^^;
#さらにif文を二項演算子にしてみるとか。

他にもNobu3さんのやりかたでnn, ieという2つの変数を使うところを,例えば初めに
ua="other";
にしておいて,各if文の最後に ua="nn"もしくは ua="ie"をつけ,
if (ua !="other") {
document.write(ua+"bye");
}
なんて形(文字列をフラグ代わりに使う)とか,工夫はいろいろできそうです。


[上に] [前に] [次に]