IE3.01でJava Scriptが動かない

[上に] [前に] [次に]
Weasel 1999/12/27(月) 20:29:55
楽しく拝見させて頂いております。

Java Scriptについての質問です。
別フレームのHTMLを変更するプルダウンを制作
しています。ソースは、下記の通りです。

^<!-- Beginning of JavaScript -
^>
^function jumpFunc00(parts){
^>
^jump = parts.options[parts.selectedIndex].value;
^>if (jump != "pass") {
^>
^if(jump.substring(0,1) == "/"){
^>jump = "http://" + location.host + jump ;
^>}else{
^>jump = jump ;
^>}
^>var i="";
^>for(i=0; i < parts.length; i++) {
^>if (parts.options[i].defaultSelected == true) {
^>parts.options[i].selected = true;
^>}
^>}
^>
^parent.main.location = jump;
^>}
^>else {
^>for (i=0; i < parts.length; i++){
^>if (parts.options[i].defaultSelected == true) {
^>parts.options[i].selected = true;
^>}
^>}
^>}
^>
^}
^>
^// - End of JavaScript - -->


この他に、プルダウンメニューをつけて、

<SELECT NAME="search" ONCHANGE="jumpFunc00(this)">
<OPTION VALUE="****.html">製品名

としてあります。

上記のような設定をすると、WinのIE3.01では動作しないのです。
(他のブラウザーは問題なし)
クライアントの要望として、IE3.01は動作してほしいとの
事です。

アドバイスお願いします。

Weasel 1999/12/27(月) 20:31:14
すみません。各行頭の^>は無視して下さい。


#コメントとして入れようとしたら、よけいな文字が入って
 しまいました。

のぐ 1999/12/27(月) 21:39:58
IE3.01!これは誰も答えにくいのでは?
IE3に付き合った経験からすると、チェックポイントは
1)parent.main.location = jump; を parent.main.location.href = jump; にしてみる。
2)selectedIndex は 使えないこともあるので、1つ1つ selected を検査する。
てなとこでしょうか。
あと、
    var i="";
    for(i=0; i < parts.length; i++) {
は変なので、var i=0; などとした方が無難かと。
そうそう、ところで、どこで引っかかるのでしょうか。なにぶん、IE3.01 は持ってないもんで。
よけいなお世話かもしれませんが、「IE3.01は動作してほしい」とのことですが、いくらなんでもIE3は3.02にバージョンアップした方がいいですよ。私は3.02ですらエライ苦労しました。とくにjavascriptを使うのであればなおさらです。

Weasel 1999/12/28(火) 13:29:51
アドバイスありがとうございます。

早速やってみましたが、やはり正常に動作しないようです。
現象としては、一番最初のページが表示されたときには、
プルダウンメニューは動作するのですが、別のページに移動
してから、プルダウンメニューを使用すると、「ファイルが
ありません」などのエラーが表示されます。
(Webサーバーのエラーメッセージ)

一度プルダウンメニューに変数(リンク先)が代入
されて、入力された内容が消去されず、続けて次の
リンク先が代入される様です。

不思議なことに、トップページに戻ると、代入された
値がクリアされるようです。

> 2)selectedIndex は 使えないこともあるので、1つ1つ selected を検査する。

とのことですが、これは具体的にどうすればよろしいのでしょうか?

わかりにくい説明で申し訳ないのですが、アドバイス
お願いします。

のぐ 1999/12/28(火) 16:14:15
>してから、プルダウンメニューを使用すると、「ファイルが
>ありません」などのエラーが表示されます。
でしたら、
parent.main.location = jump;
↑の前にbreakpointを入れて、
alert(parent.main.location);
などとして検査したらどうなります?どこを指しているのでしょう?

フレームの切り方も教えていただけると、理解がしやすいかも知れません。また、以前IE3.02でmainというフレーム名を使うと動作がおかしいというのを読んだことがあります。名前を変更したらどうなるでしょう。

Weasel 1999/12/28(火) 17:49:17
説明下手で申し訳ありません。

フレームの切り方は、index.htmlで
・menu.html(name="menu")
・top.html(name="main")
と指定してあります。

問題のJava Scriptは、menu.htmlの中に含まれています。
"menu"フレームのプルダウンで指定したページが、"main"に
表示される形です。

> 以前IE3.02でmainというフレーム名を使うと動作がおかしい

早速試してみます。ありがとうございました。

Weasel 1999/12/28(火) 18:08:06
>> 以前IE3.02でmainというフレーム名を使うと動作がおかしい

>早速試してみます。ありがとうございました。

フレームのnameを"main"から"contents"に変えてみましたが、
結果は変わらずです。

> parent.main.location = jump;
> ↑の前にbreakpointを入れて、
> alert(parent.main.location);
などとして検査したらどうなります?

やってみましたら、やっぱりリンクがおかしくなっていました。
表示されるコンテンツは
/aaa/bbb/ccc.html
なのですが、アラートで出た結果は
/aaa/bbb/aaa/bbb/ccc.html
とディレクトリが重複してしまうようです。
それで、「リンク先が見つからない」といったエラーが
発生してしまうようです。

表示されるドキュメントの階層は固定なので、よけいな
URLを追加するようなスクリプトは削除してしまいたいと
思いますが、どこでしょうか?
> if(jump.substring(0,1) == "/"){
> jump = "http://" + location.host + jump ;
が臭いと思いますが、これってif構文だし、、、

Weasel 1999/12/28(火) 18:54:01
>> 以前IE3.02でmainというフレーム名を使うと動作がおかしい

>早速試してみます。ありがとうございました。

フレームのnameを"main"から"contents"に変えてみましたが、
結果は変わらずです。

> parent.main.location = jump;
> ↑の前にbreakpointを入れて、
> alert(parent.main.location);
などとして検査したらどうなります?

やってみましたら、やっぱりリンクがおかしくなっていました。
表示されるコンテンツは
/aaa/bbb/ccc.html
なのですが、アラートで出た結果は
/aaa/bbb/aaa/bbb/ccc.html
とディレクトリが重複してしまうようです。
それで、「リンク先が見つからない」といったエラーが
発生してしまうようです。

表示されるドキュメントの階層は固定なので、よけいな
URLを追加するようなスクリプトは削除してしまいたいと
思いますが、どこでしょうか?
> if(jump.substring(0,1) == "/"){
> jump = "http://" + location.host + jump ;
が臭いと思いますが、これってif構文だし、、、

Weasel 1999/12/29(水) 15:51:12
[[解決]]
一応解決しましたので、御報告申し上げます。

今までのJavaScriptの修正を諦めて、別のサンプルを
探していたら、下記のページが見つかりました。

http://www2c.biglobe.ne.jp/~shimojo/sel3.htm

そこでは、Java Scriptをタグで指定せず、プルダウンを
<select onChange="parent.contents.location=this.options[this.selectedIndex].value">
と指定します。
そして、
<OPTION VALUE="http://www.****.co.jp/aaa/bbb/ccc.html">製品名
と指定すると、WindowsのIE3.0では動作することが判明しました。
しかし、Mac版のIE3.0では動作しませんでした。

もし、Mac版のIE3.0でも動作する方法を知っている方が
いましたら、アドバイスお願いします。

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