JavaScript の独習を始めたところなんですが、
Internet Explorer と Netscape Navigator では JavaScript 命令の違う部分がいろいろあるようで、
何かスクリプトを作ろうとすると、その度に if 文なんかでごちゃごちゃ書かなきゃならなくて、
覚えるにしても書くにしてもチェックするにしても、えらく煩わしい感じがしています。

もう少しすっきり整理されるような見通しとかはないんでしょうか?

それと、まだやったことはないんですが、Java なんかについても同じようなことはあるんでしょうか?

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

A 回答 (4件)

> 何かスクリプトを作ろうとすると、その度に if 文なんかでごちゃごちゃ書かなきゃならなくて、


> 覚えるにしても書くにしてもチェックするにしても、えらく煩わしい感じがしています。
これ↓などのライブラリ系のスクリプトを利用するとソースをすっきりさせることができますよ。

参考URL:http://www.din.or.jp/~hagi3/JavaScript/JSTips/Mo …
    • good
    • 0

>もう少しすっきり整理されるような見通しとかはないんでしょうか?


JavaScriptについては見とおしはなんとか立てようとしているようです。

IE4とNN4との違いに比べ、
IE5以降とNN6としぼれば、両者の違いは、かなりわずかなものとなりました。
(今までIFで分けていたところが60%ぐらいなくなるはずです)

これは、IE4が、document.all型、NN4が、document.layers型なのに比べ、
IE5とNN6は共通して、document.getElementById型なので、
(#1のcockyさんが言っておられるECMAScriptの仕様になんとか両ブラウザとも近づけようとしています)
まず、ここの部分の場合分けがなくなった時点「レイヤー関連」の場合わけがなくなりますので、でそうとうIF文がなくなりますよね!!

あとは、古いブラウザを使用しているユーザーが自然と減ってゆくのをじっくりと
まつしかないですね。
今はIE4とNN4で「足切」というのが一般的なようですので、
これがIE5とNN6で「足切」と全体の流れがそうなるまで待つしかないと思います。
まぁ、でもそんな遠いことではなくて、いままでの流れから
考えて2年後ぐらいではないでしょうか?
    • good
    • 0

クロスブラウザという考え方があります。


参考URLをご覧ください。

色々便利な関数も提供されていますので、これらを使っていれば、どちらのブラウザでも動作します。

参考URL:http://www.fureai.or.jp/~tato/DHTML/simple/conte …
    • good
    • 0

MSもNetscapeも今の状況に問題があるという認識はあり、一応両社のスクリプトを元にした統一規格として「ECMAScript」という規格が既に成立してはいます。


ただまだ現時点でECMAScriptに準拠したブラウザを両社ともリリースしてないんですよねぇ…。

今のところECMAScriptを使っているのはBSデジタルのデータ放送ぐらいのもんで。
早く何とかして欲しいところですが。

参考URL:http://www2.airnet.ne.jp/sardine/complang/ECMASc …
    • good
    • 0

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

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

Qjavascript i in navigator

javascriptを学んでいる初心者です。
以下のforの条件式(i in navigator)は、何を表していますか?
よろしくお願いします。

for (i in navigator) {
try {
txt += i+" = "+navigator[i]+"<br>";
}catch(e){}
}

参照URL http://www.openspc2.org/JavaScript/reference4/navigator/navigator/index.html

Aベストアンサー

連想配列 navigator の要素がある分だけ 繰り返す for ~ in 文というものです。
iには 連想配列のキーワードがはいっていきます。

navigatorは ブラウザ情報や、OS情報などが入った
もともとある配列?(たぶん言い方はおかしいと思います 失笑してください)
なので、連想配列 navigatorに入ってる情報を、
変数 txt に 配列要素数分だけ 追記 していくコードになります。

document.write navigator[userAgent]; で、 IEでみてたら IE firefoxでみてたら firefox と表示されます。

QIE7のJavascriptで return false をしてもリンクしてしまう

これまでjavascript無効の人のために

<a href="test.html" onclick="test();return false;">link</a>

という感じで、無効の人はリンク先へ飛んで、有効の人はJavascriptを実行して処理する、といったコードを使っていました。
しかし、IE7では、onclickで false が帰ってきても、そのままリンクにいってしまうようで困っています。 IE6、Firefox2では思うように(onclickだけで止まる)動いてくれます。

もうこれは仕様のため、全面的に書き直さなければならないのでしょうか?
ご存じの方おられましたらご教示いただけると幸いです。

Aベストアンサー

test()の中でエラーになってるだけだと思ったのですが、、、?
test()はどの様な内容でしょうか?


<a href="aaa.html" onclick="return false;">検証</a>
これで動作が止まりますか?


IE6とIE7のチェックはどの様にされています?
パソコンを2台用意するとか、マルチブートしてるとか・・・

IE7 StandAloneを入れていると、動作がかなり変わるらしいですが、
インストールしていませんか?
http://tredosoft.com/IE7_standalone

今まで動いていたスクリプトがこれをインストールすると動かなくなったという話や、
CSSの表示の仕方も変わると聞いたことがあります。
もしそうなら、対策は、基本的にはIE7 Stand Aloneをアンインストールしかないと思います。

QこのJavaScriptはなんか早い・・・

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>タイマー</TITLE>
</head>
<body>
<script language="JavaScript"><!--
myCnt = 0;
myTim = 0;
function myGo(){
mySelect = document.myForm.myMenu.selectedIndex;
myCnt = eval(document.myForm.myMenu.options[mySelect].value);
myTim = setInterval("myTimer()",1000);
}
function myTimer(){
myCnt = myCnt-1;
document.myForm.myFormSec.value = myCnt + " 秒";
if (myCnt == 0){
clearInterval(myTim);
alert("制限時間を終了しました。");
}
}
// --></script>

<CENTER>
<form name="myForm"><select name="myMenu" size="1">
<option value="180">時間制限は? </option>
<option value="600">10分 </option>
<option value="300">5分 </option>
</select>
<input type="button" value="GO!" onclick="myGo()">                            あと<input type="text" size="15" name="myFormSec"> です。</form>
</CENTER>
<form>
<center><input type="button" value="閉じる"
onclick="window.close()">
</center>
</form>
</body>
</html>

上のものを実行させると、なぜかスピードが早くなってしまいます。
どうすればいいのでしょう。
お願いします。

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>タイマー</TITLE>
</head>
<body>
<script language="JavaScript"><!--
myCnt = 0;
myTim = 0;
function myGo(){
mySelect = document.myForm.myMenu.selectedIndex;
myCnt = eval(document.myForm.myMenu.options[mySe...続きを読む

Aベストアンサー

ボタンを連続で押すと、タイマーが何個も作られるからですね。
タイマーを開始する前に、古いタイマーを停止してみてはいかがでしょうか。

function myGo(){
(中略)
if(myTim){clearInterval(myTim);
myTim = setInterval("myTimer()",1000);
}

Qjs navigator.online

javascriptにnavigator.onLineというメソッドがありますが
これをif文の中に入れて

if( navigator.onLine ){

}
とすると、もしユーザーがオンライン(ネットに繋がってる状態)なら処理をする。
という解釈は間違ってますか?

また navigator.onLine単体で書くとどうゆう意味になるでしょうか?

Aベストアンサー

こんにちは

意味合いとしてはその解釈だと思いますが、実際には、環境やブラウザの実装によって異なると書いてあります。
https://developer.mozilla.org/ja/docs/Web/API/NavigatorOnLine/onLine

Qif(document.all && navigator.appVersion.indexOf('Mac')!=-1)returnの意味

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ、で、falseが返されるのでしょうか?
しかし、そもそもnavigatorオブジェクトはブラウザの種類のことではないのか?と混乱してしまっています。
また、document.allがどのような役割を果たしているのかも分かりません。なぜここでdocument.allが出てくるのでしょうか?

どなたか分かる方いらっしゃいましたら、ご教授宜しくお願いします。

よろしくお願いします。
JavaScriptの勉強をしているのですが、参考にしている書籍に以下の構文が出てきまして、それの意味が分からなくて悩んでいます。

//MacIE4,5バグ 回避
if(document.all && navigator.appVersion.indexOf('Mac')!=-1)return

//以降に記してあるとおり、OSがMacintoshだった場合に何らかの処置を行うプログラムなのは分かるのですが・・。
navigator.appVersion.indexOf('Mac')!=-1の部分は、「navigator.appVersion.indexOf('Mac')が1ではなかったら、Macユーザーであるということ...続きを読む

Aベストアンサー

「document.all」は昔はIEにだけ存在するオブジェクトだったのでIEであるかどうかの判定に使われました。

今ではOperaやNetscape等でもIEへの互換の為に存在するのでIEかどうかの判定に使われる事は減ってきています。
IEであるかどうかの判定ではなく、純粋にdocument.allが在る(使える)かという判定にはもちろん使用されますが。

「navigator.appVersion」は確かにブラウザの種類なんですが、実際にはOS名も含まれていたりすのでOSの判定にも使われたりします。

また、 != -1 というのは indexOf関数の結果が 0~なら文字列が見つかったという意味(真偽ではなく、見つかった位置を返す関数)になるのでこういう比較式を使用しています。
(1でなかったらMacユーザという解釈はちょっと違います。)

参考URL:http://www.openspc2.org/JavaScript/ref/


このカテゴリの人気Q&Aランキング

おすすめ情報