• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Netscape6でフレーム間での画像の変更)

Netscape6でフレーム間での画像の変更方法について

このQ&Aのポイント
  • Netscape6でフレーム間での画像の切り替えスクリプトを作成しているが、うまく動作しない。
  • IE5.5とネスケ4.75では正常に動作するが、Netscape6では問題が発生している。
  • 解決方法やアドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • hi-ogawa
  • ベストアンサー率100% (2/2)
回答No.2

こんにちは。 実際のページを拝見しました。 HTMLをダウンロードして、(CGIは生成されたHTMLを利用するしか ないですが)こちらのローカル環境でいろいろ試してみました。 pagename.htmのなかで、以下のようにスペーサの制御を している部分がありますが、これをまるまる削除したところ、 当方の環境ではNetscape6でも想定どおりの動きをしました。 ------------------------------------------------------- <tr height="3" valign="top"> <td width="153" bgcolor="#FFFFAD"><img src="http://homepage2.nifty.com/cradoll/images/spacer.gif" width="150" height="3"></td> <SCRIPT language="JavaScript"><!-- if(navigator.appName.charAt(0) == "N" && parseInt(navigator.appVersion) < 5){ document.write('<td width="523" bgcolor="#000000"><img src="http://homepage2.nifty.com/cradoll/images/spacer.gif" width="524" height="3"></td>'); }else{ document.write('<td width="526" bgcolor="#000000"><img src="http://homepage2.nifty.com/cradoll/images/spacer.gif" width="526" height="3"></td>'); } //--></SCRIPT> <td width="100%" bgcolor="#FFFFAD"><img src="http://homepage2.nifty.com/cradoll/images/spacer.gif" width="100%" height="3"></td> </tr> ------------------------------------------------------- Netscape6で問題のページを見ようとすると、ページのダウンロードが いつまでたっても終了しない(Netscapeのロゴが止まらない)という 状態になるのが気になりました。以前仕事上で同様の現象を見たこと がありますが、そのときには  1.document.write()を極力使わない。  2.METAで文字コードを指定する。 などとしたところ解決しました。ですが今回のケースはそれでも解決でき ませんでした。  当方の環境が実際の環境と全く同じというわけではないので(CGIなど) これで本当に解決するかどうかちょっと判断がつきません。  詳しい方がいらっしゃいましたら、フォローをお願いいたします。

cradoll
質問者

お礼

ありがとうございました もともとはHTMLでのみ記述していたのですが ページの更新作業や同内容のソースが多くなり CGIで記述したものだったので面倒くさがりはだめですね ブラウザによるスペーサの大きさを変える部分を CGI側で行うようにすれば何とかなりそうです

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hi-ogawa
  • ベストアンサー率100% (2/2)
回答No.1

こんにちは。 これで想定どおりなのか、いまいち自信がないのですが、 とりあえず以下のようにしてみたところ、正常に動くように なりました。 フレーム1のソース------------------------------- <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- var m_num; function _sendData(num){ m_num = num; m_sendData(); } function m_sendData(){ if(window.top.frames[1].ready == true){ window.top.frames[1]._imgChange(m_num); } else { setTimeout("m_sendData()", 100); } } //--> </SCRIPT> </HEAD> <BODY onLoad="_sendData(1)"> </BODY> </HTML> フレーム2のソース------------------------------- <HTML> <HEAD> <SCRIPT language="JavaScript"> <!-- var ready; var img; ready = false; img = new Array(2); //for (i=0;i<2;i++){img[i]=new Image();} //img[0].src = "images/1.jpg"; //img[1].src = "images/2.jpg"; img[0] = "images/1.jpg"; img[1] = "images/2.jpg"; function _imgChange(num){ nam = "imgname"; //document.images[nam].src = img[num].src; document.images[nam].src = img[num]; } //--> </SCRIPT> </HEAD> <BODY onload="ready = true"> <!--  (*1) --> <IMG src="images/3.jpg" name="imgname"> </BODY> </HTML> ------------------------------------------------- どうやら、フレーム2のイメージ部分のタグがロードされる 前にフレーム1からそのイメージオブジェクトへアクセス しようとしたため、正常に動作しなかったのだと思われます。 試しに(*1)部分に大量の文字列を挿入してみるとIEでも 正常に動作しなくなります。Netscape6 は動作が重いので、 よりロードに時間がかかり、バグが顕在化したのだと思います。 それにしても、これで回答になったのでしょうか。 もっとよいやり方を知っている方がいるような気もします。 それでは、失礼します。

cradoll
質問者

お礼

早速のありがとうございました しかし原因がわからないですが、うまく動きません フレームの入れ子をしているせいか、画像数が実際は15枚と多いせいか ページの描画にCGIを利用している などほかにも原因がありそうなんですが・・・ http://homepage2.nifty.com/cradoll/main.html がそのページです ページの内容は気にしないで下さい(笑

すると、全ての回答が全文表示されます。

専門家に質問してみよう