• ベストアンサー

別窓のインラインフレームの中身を変更する

javascript初心者です。 HPを作成中ですが、FLASHが全くわからないので、javascriptでアルバムを作っています。 メインページで何月が選択できるようになっており、クリックすると別窓が出ます。 別窓にはインラインフレームでサムネイル表示させ写真を選べるようにしています。 別窓のファイルは1つ(album.html)にし、メインページからインラインフレームの中身(1月.html,2月.html etc...)を変えようとしています。 プログラムはこのようにしました。 subWin = window.open("***"); function ***() { subWin.インラインフレーム名.location.href = ***.html; } 最初、インラインフレームの中身がうまく表示されなくて、プログラムが間違っているのかと思ったのですが、プログラムエラーは出ず、アクティブコントロールがどうのこうのって表示が出たので、試しに『マイコンピュータのファイルでのアクティブコンテンツ実行を許可する』にしてみたところ、ちゃんと表示されました。 しかし、ちょっと不安定なんです。 連続でメインページの月選択を押すと(そんな人はいないでしょうけど)表示されたりされなかったり・・・ javascriptを使うとそんなもんなんですか? それと、自分のPCでは見れてもサーバーにアップして公開しても他の人には見れるか心配です。 素直に別窓をフレーム分割して作る方法もありますが、そうするとファイル数が倍になるので今回javascriptを使いました。 プログラムが間違っているのか、そもそも別窓のインラインフレームを指定することが間違っているのか、不安定の原因をお教えください。

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.3

別窓のalbum.htmlがオープンチェックし まだオープンされていない場合のみ window.openで オープンするといいですよ。 あと、その他対処としてwindow.showModalDialogで モーダルダイアログでalbum.htmlをオープンする 方法もあります。 <Script Language="JavaScript"> <!-- //別窓のウィンドウハンドル退避用変数 var hWin = null; function ***() { //別窓のオープンチェック if (hWin && !hWin.closed) { //オープンしている場合 hWin.インラインフレーム名.location.href = ***.html; } else { //オープンしていない場合 hWin = window.open("album.html"); hWin.インラインフレーム名.location.href = ***.html; } } //--> </Script>

fumi-ryu
質問者

お礼

お礼が遅くなってすみません。 教えていただいたプログラムで別窓が複数出てくることはなくなりました!! どうもありがとうございます!! ただ、まだ別窓を開くとインラインフレームが表示されないときがあるんですよね。 もう一度プログラムを見直して見ます。 ご回答ありがとうございました。

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

その他の回答 (2)

回答No.2

subWinを確認して、 値が返る(窓が開いている)場合は 新規に窓を開かず(window.openしない) 開いている窓に別の月を表示させる(Location.href)ことのみ行うように scriptを書き換えればよろしいかと思います。 javascriptは知る限り、不安定な動きはしません。 ある特定の状況では必ず同じ動作を行いますよ。 (*ブラウザによる解釈の差によるものは除く)

fumi-ryu
質問者

お礼

お礼が遅くなってすみません。 >javascriptは知る限り、不安定な動きはしません。 そうですか。。。 回数は減りましたが、まだ別窓を開いたときにインラインフレームが開かないときがあるんですよね。 もう一度プログラムを見直して見ます。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

・別窓で開くページがalbum.htmlでない。 window.open("***");  質問を記述する際のミスで、実際はwindow.open("album.html"); となっていますか? ・メインページ対象月の選択とJavaScriptの呼び出し関数との  整合性はOKですか?

fumi-ryu
質問者

補足

すいません。 window.open("album.html")です。 どうやら、不安定になるのは、 window.open("album.html","***") と、name属性を入れると不安定になるみたいです。 この場合、別窓は1つしか出てきませんが、別窓を閉じないで別の月選択をすると表示がおかしくなります。 window.open("album.html") と、name属性を入れないと安定はするのですが、月選択をするごとに別窓が新たに出てくるので、ウィンドウがすごくいっぱいに増えます。 どうするのが一番いいのでしょうか?

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

関連するQ&A