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

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

Netscape6でフレーム間での画像の変更

あるページから別フレームの画像を切り替えるスクリプトを作成していて困っています フレーム1側ソース ... function _sendData(num){  window.top.frames[1]._imgChange(n); } ... <body onLoad="_sendData(n)"> ... フレーム2側ソース ... for (i=0;i<2;i++){img[i]=new Image();} img[0].src = "images/abc.jpg"; img[1].src = "images/def.jpg"; function _imgChange(num) {  nam = "imgname";  document.images[nam].src = img[num].src; } ... <img src="xyz.jpg" name="imgname"> ... 上記ソースのように作成しましたが 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 がそのページです ページの内容は気にしないで下さい(笑

関連するQ&A

  • 別フレームの画像の操作について

    画像をクリックすると指定した所にある画像が その画像に変わるというタグを作ったのですが、 1つのフレーム内ではできるのですが 2つのフレームを使って、もう片方にある指定した 画像を変更する事ができなく、色々とサイトを見て みたのですがどうにもうまくいかず、質問させていただきます。 1つ目のフレームののタグは <SCRIPT language="JavaScript"> <!--HPB_SCRIPT_CODE_40 function _HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = _HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } function _HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = _HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } //--> </SCRIPT> 続きは次のレスに(長くてすいません)

  • JavaScriptで画像を変更する

    質問が分かりずらいと思いますが、お願いします。 <body>内に↓が書かれています。 <script language="JavaScript"> <!-- function ChangePics() { for(i = 0; i < 3; i++) document.images[i].src = "white.jpg"; } // --> </script> <img src="black.jpg"><br> <img src="black.jpg"><br> <img src="black.jpg"><br> <form> <input type="button" value="画像一括変更" onclick="ChangePics()"></input> </form> ------------------------------------------------------------ [画像一括変更]ボタンをクリックすると表示されていた3枚の「black.jpg」が「white.jpg」に切り替わります。 ですが、画像のsrcへのアクセスは「document.images[i].src」で 行っているため、 <img src="black.jpg"><br> <img src="black.jpg"><br> <img src="black.jpg"><br> の上に他の画像がある場合はその画像が「white.jpg」に変更されてしまいます。 ですが、<img src="black.jpg" name = "pic1">のようにname属性を付けるのは処理が面倒になるので、避けたいです。 質問の意図は、「作ったJavaScriptのプログラムをブログに載せたいが、そのプログラムの上にほかの画像があるため、正常に動作しない。」ということです。

  • なぜ「ページでエラーが発生しました。」?

    字数が限られているので、「なぜエラーなのですか?」 -----ここからhead区間 <!--JavaScript Function window.onerror = null; var ver4 = (navigator.appVersion.charAt(0) >= "4"); var NN4 = ver4 && (navigator.appName.charAt(0) == "N"); var IE4 = ver4 && (navigator.appName.charAt(0) == "M"); var NN3 = ((navigator.appVersion.charAt(0) == "3") && (navigator.appName.charAt(0) == "N")); if(NN3 || NN4 || IE4){ var img_b = new Array(); img_b[0] = new Image(); img_b[0].src = "kbw.jpg" img_b[1] = new Image(); img_b[1].src = "ao.jpg" img_b[2] = new Image(); img_b[2].src = "bcw.jpg" img_b[3] = new Image(); img_b[3].src = "sm.gif" } function B_in(nam,num){ if(NN3 || NN4 || IE4) document.images[nam].src = img_b[num].src; } function B_out(nam,num){ if(NN3 || NN4 || IE4) document.images[nam].src = img_b[num].src; return false; } // END ---> </SCRIPT> </head> -----ここからbody <BODY onLoad="time(0)"> <SCRIPT LANGUAGE="JavaScript"> <!--- ここから表示 document.write(TodayIMG(0)); //end ---> </SCRIPT>

  • 一定時間で変化する画像とリンク

    業者さんにトップのページを作成してもらいました。 一定時間で画像が変化するようになっているのですが、 その画像ごとにクリックした際に違うリンクを貼りたいのですが 初心者の為、よくわかりません。 下記ソースですが どこを編集したらよいのでしょうか? <!-- //変更秒間隔を指定 var sec = 5; sec = sec * 1000; arrI = new Array("top_P1.jpg","top_P2.jpg","top_P3.jpg") var num = arrI.length; var arrO = new Array(); for (var i=0;i<num;i++) { arrO[i] = new Image(); arrO[i].src = arrI[i]; } i = 0; function cngImg(){ if(document.all){ document.images.img.style.filter="blendTrans()"; document.images.img.filters.blendTrans.Apply(); } document.images.img.src = arrO[i].src; if(document.all){ document.images.img.filters.blendTrans.Play(); } i ++; if(i >= num){i = 0;} setTimeout("cngImg()",sec); } //-->

  • ロールオーバーで画像を先読みする方法

    スワップイメージをJavascriptで製作しました。 どうしても 先読みした画像を 指定する方法がわかりません。 このやり方ではできないのでしょうか? お教えください よろしくお願いします。 以下作成したコードになります。 function preload() { var images1 = new Image(); var images2 = new Image(); var images3 = new Image(); images1.src = "ike1.jpg"; images2.src = "ike2.jpg"; images3.src = "ike3.jpg"; } function over(num){ var a=document.getElementById("img1"); var b=document.getElementById("title1"); var c=document.getElementById("teima1"); switch(num){ case 1: a.innerHTML = "<img src='ike1.jpg'>"; b.innerHTML = "ああああ"; c.innerHTML = "ああああ"; break; switch(num){ case 2: a.innerHTML = "<img src='ike2.jpg'>"; b.innerHTML = "ああああ"; c.innerHTML = "ああああ"; break; switch(num){ case 3: a.innerHTML = "<img src='ike3.jpg'>"; b.innerHTML = "ああああ"; c.innerHTML = "ああああ"; break; } }

  • マウスオーバー・アウトの制御のソース

    複数のボタンでマウスオーバー・アウトの制御のソースを教えてもらったのですが、質問いたします。 この場合、このボタンはオーバーとアウト、それぞれ同じ画像を使用しているのですが、その場合でも全部違ったファイル名をつけなければいけないのでしょうか? 現在はそあしているのですが、何か無駄な気がして・・・。 よしくお願いします。 <SCRIPT LANGUAGE = "JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "images/c1b.gif"; img2on = new Image(); img2on.src = "images/c2b.gif"; img3on = new Image(); img3on.src = "images/c3b.gif"; img1off = new Image(); // MouseOut Images img1off.src = "images/c1a.gif"; img2off = new Image(); img2off.src = "images/c2a.gif"; img3off = new Image(); img3off.src = "images/c3a.gif"; img4off = new Image(); } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }}   function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </SCRIPT>

  • 画像切り換えでTransitionをかけたい。

    フリーソースでの応用なのですが 次のJavaScriptで画像の自動切り換え表示に Transitionをかけたいのですが、知識がなくてわかりません。 アドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- var num = 1; function timer () { if(document.img.complete) { document.img.src = "photo" + num + ".jpg"; num++; if(num > 5) num = 1; } setTimeout("timer()", 1000); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> function viewSource(){ location = "view-source:" + window.location; } </SCRIPT> ----------- <BODY onload="setTimeout('timer()', 2000);"> <IMG SRC="photo1.jpg" NAME="img"> -----------

  • 画像クリックでウインドウを閉じたいのですが・・・

    こんにちは。JavaScriptはwebサイトから頂いて コピーして使うだけの理解力です。どうぞよろしくお願いします。 フォトアルバムを作っていまして、画像をクリックするごとに 画像が入れ替わるところまではできたのですが、 それですと延々と続いてしまいますので、最後の画像で小窓ごと 閉じてしまいたいのですが、どのようなタグになりますでしょうか? HEADに <SCRIPT LANGUAGE="JavaScript"> <!--// img = new Array("http://www5b.biglobe.ne.jp/○○.jpg","http://www5b.biglobe.ne.jp/○○2.jpg","http://www5b.biglobe.ne.jp/○○3.jpg"); i=0; function myChange(){ i++; i %=img.length; document.my_imgchange.src = img[i]; } // --> </SCRIPT> bodyに <a href="JavaScript:myChange()"><img src="http://www5b.biglobe.ne.jp/○○.jpg" border="0" name="my_imgchange"> と入れています。 例えば3枚目の画像をクリックした時に、また1枚目の画像に戻るのではなくて、 小窓ごと閉じてしまうにはどのようなタグをどこへ埋め込めばよろしいでしょうか? 色々試してみましたがうまくいきませんでした。 どなたか力をお貸しください。どうぞよろしくお願い致します。

  • 画像をバナーのように切り替える

    以下のように画像を一定時間で切り替えて、プラスクリックするとリンク先のページへとぶようになっているScriptがあります。これを1日分(1セット)にして毎日違うセットが表示するには、どのようにすればいいでしょうか。どなたか宜しくお願いします。 num=2 img=new Array(); url=new Array(); img[0]=new Image(); img[0].src="images/x.gif"; img[1]=new Image(); img[1].src="images/y.gif"; url[0]="http://www.xxxxxxxx"; url[1]="http://www.yyyyyyyy"; function show(){ num++; if(num >= img.length) { {num=0;} } document.start.src=img[num].src; setTimeout("show();",2000); } function Pagelink(){ window.open (url[num]); }

  • ボタンワンクリックで、2つ以上のフレームを同時更新する方法

    お世話になります。 本当に行き詰っているので、ソースをコピペしてお尋ねします…。 ホームページビルダー11使用です。 フレーム5分割で、1つのボタン(アイコン)を押すと、 2つのフレームページを同時更新できるものを作成したいと思っています。 JavaScriptのサイトを参考に以下の「*******」で囲んだ部分を自分で 追記しましたが、プレビューでうまく表示されません。 (「このプログラムではこの Web ページを表示できません」と 全画面に表示されます。) 以下、ソースです。 ---------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 11.0.0.0 for Windows"> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> *********************************************************************** <meta http-equiv="content-script-type" content="text/javascript"> *********************************************************************** <SCRIPT language="JavaScript" type="text/javascript"> <!--HPB_SCRIPT_CODE_40 function _HpbImgSwap(imgName, imgSrc) { var appVer=parseInt(navigator.appVersion); var isNC=false,isN6=false,isIE=false; if (document.all && appVer >= 4) isIE=true; else if (document.getElementById && appVer > 4) isN6=true; else if (document.layers && appVer >= 4) isNC=true; if (isNC||isN6||isIE) { if (document.images) { var img = document.images[imgName]; if (!img) img = _HpbImgFind(document, imgName); if (img) img.src = imgSrc; } } } function _HpbImgFind(doc, imgName) { for (var i=0; i < doc.layers.length; i++) { var img = doc.layers[i].document.images[imgName]; if (!img) img = _HpbImgFind(doc.layers[i], imgName); if (img) return img; } return null; } ********************************************* function jump(x1, x2) { window.open(x1,"frame4"); window.open(x2,"frame5"); } ********************************************* //--> </SCRIPT></HEAD> <BODY> <TABLE border="0"> <TBODY> <TR> *********************************************************************************************************************** <A href="javascript:jump('C:/Users/○○/Desktop/作業フォルダ/a.html','C:/Users/○○/Desktop/作業フォルダ/b.html')"> <IMG src="icon/submenu.jpg" width="102" height="21" border="0" align="middle" name="submenu_seihinannnai" onmouseover="_HpbImgSwap('submenu', 'icon/submenu2.jpg');" onmouseout="_HpbImgSwap('submenu', 'icon/submenu.jpg');"> </A> *********************************************************************************************************************** </TR> </TBODY> </TABLE> </BODY> </HTML> ---------------------------------------------------------------- 何が悪いのでしょうか…。 お手数ですが、どうぞよろしくお願い致します。

    • ベストアンサー
    • HTML