あるページから別フレームの画像を切り替えるスクリプトを作成していて困っています
フレーム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だけうまく動作しません
解決方法その他アドバイスお願いします
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 … 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 … width="524" height="3"></td>');
}else{
document.write('<td width="526" bgcolor="#000000"><img src="http://homepage2.nifty.com/cradoll/images/spacer … width="526" height="3"></td>');
}
//--></SCRIPT>
<td width="100%" bgcolor="#FFFFAD"><img src="http://homepage2.nifty.com/cradoll/images/spacer … width="100%" height="3"></td>
</tr>
-------------------------------------------------------
Netscape6で問題のページを見ようとすると、ページのダウンロードが
いつまでたっても終了しない(Netscapeのロゴが止まらない)という
状態になるのが気になりました。以前仕事上で同様の現象を見たこと
がありますが、そのときには
1.document.write()を極力使わない。
2.METAで文字コードを指定する。
などとしたところ解決しました。ですが今回のケースはそれでも解決でき
ませんでした。
当方の環境が実際の環境と全く同じというわけではないので(CGIなど)
これで本当に解決するかどうかちょっと判断がつきません。
詳しい方がいらっしゃいましたら、フォローをお願いいたします。
ありがとうございました
もともとはHTMLでのみ記述していたのですが
ページの更新作業や同内容のソースが多くなり
CGIで記述したものだったので面倒くさがりはだめですね
ブラウザによるスペーサの大きさを変える部分を
CGI側で行うようにすれば何とかなりそうです
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 は動作が重いので、
よりロードに時間がかかり、バグが顕在化したのだと思います。
それにしても、これで回答になったのでしょうか。
もっとよいやり方を知っている方がいるような気もします。
それでは、失礼します。
早速のありがとうございました
しかし原因がわからないですが、うまく動きません
フレームの入れ子をしているせいか、画像数が実際は15枚と多いせいか
ページの描画にCGIを利用している
などほかにも原因がありそうなんですが・・・
http://homepage2.nifty.com/cradoll/main.html
がそのページです
ページの内容は気にしないで下さい(笑
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- Perl 画像が表示でnull; this.src 1 2022/04/19 11:31
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムについて。
-
スマホ上で、左右スワイプで次...
-
初心者です。gulpでコンパイル...
-
プログラムがうまく動きません...
-
jsで質問です。 displayプロパ...
-
【Google Apps Script】「ライ...
-
console.logがどうしても2つ機...
-
指定時間になったら、WEBサイト...
-
Googleフォームで選択肢に応じ...
-
セレクトを全て選択されていな...
-
イラストレーター、縦中横のシ...
-
sessionStorageを調べています。
-
コードレビューをお願いします。
-
セレクトボックスで配列を呼び...
-
jsで、配列内の文章を改行する...
-
jQueryで同じクラス名のものを...
-
HTMLタグに複数のクラスを設定...
-
コードレビューをお願いします。
-
IndexedDB を使ってファイルア...
-
画面遷移を行わずに同一ページ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
-
jsで質問です。 displayプロパ...
-
画面遷移を行わずに同一ページ...
-
Googleフォームで選択肢に応じ...
-
特定の文字列を複数抜き出した...
-
フロントエンドフレームワーク...
-
変数名をどのようにつけるのが...
-
【JS】selectでchangeした時の...
-
React hooksが値を返して配列変...
-
オブジェクトから任意のプロパ...
-
指定時間になったら、WEBサイト...
-
Colorboxがうまく設置できません
-
二次元配列の中の各行の要素を...
-
読み込んだQRコードをフォーム...
-
IndexedDB を使ってファイルア...
-
HTMLで作った時報アプリが動き...
-
GASに文字列として関数を入れる...
-
GASでGoogleフォームの自動返信...
-
①入力フォーム→②確認表示画面→③...
おすすめ情報