• ベストアンサー

フレーム名がすでに開かれているかを取得する方法

フレーム使用をするとページとしないページの両方で使われるものを作成中です。 下のページで特定のフレーム名がすでに開かれている時だけ、そのフレームに表示したいのですが。 フレーム名がすでに開かれているかを取得する方法がありますでしょうか。 闇雲にwindow.open("a.html","left");だと別のウィンドゥとして開かれてしまうので、この前に判定したいのですが。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

こんばんわぁ、Blackwinglsです。 top.frames.length でフレーム数を取得できます。 フレーム数が1以上の時に top.frames[x].name でフレーム名を取得してみるってのはどうでしょうか? なお、xは0から始まりますので要注意。 今、歯が痛くて、サンプルスクリプトを書くだけの元気がないので・・・・(^^;) ちょっと思い付いた分だけ書いてみました。 ではでは(^^)/~~~

ayamailnet
質問者

お礼

この使い方でうまくいったみたいです。 0から始まる注意事項もありがたかったです。 ありがとうございました。

その他の回答 (1)

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.2

<script ~><!-- if(top.left&&top.left.location.href) window.open(~) //--></script> もしleftに特定のhtmlが入っている必要があるのなら、 <sc ~><!-- if(top.left&&top.left.location.href=="***.htm") 〃 //--></~ という感じ。

ayamailnet
質問者

お礼

とても簡潔な使い方の表現ありがうございました。 でも、この内容ですと私の使い方の誤りかもしれませんが、存在しないフレームの場合にスクリプトエラーが発生します(IE5.0 Win2K)。 NN6では大丈夫のようですが、今回は汎用的なスクリプトを作成中のため、残念ですが利用できませんでした。 いずれこの使い方も使うことがあると思います、ありがとうございました。

関連するQ&A

  • フレームで呼び出したhtml名の取得

    お世話になります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2374524 で、教えて頂いた関数呼び出しについてです。 フレームを左右に分割しています。 左側 frame_left.html    name="left" 右側 最初page1.html    後でページを切り替える name="main" としたとき、 frame_left.htmlで <a href="page2.html" onclick='getTagName();' target="main">ページ2</a> とすると、右側フレームはpage2.htmlに切り替わります。 このとき、getTagName();が、ページが切り替わった後に実行される方法として、 No1.talepandaさんに、 <body onload="window.parent.left.getTagName();"> と、いう方法を教えて頂きました。 ここで、関数getTagName()で、この呼び出したhtml名、つまりpage2.htmlを取得できないものでしょうか。 いろいろと試してみました。 alert("window.parent.mainfrm.location.href="+window.parent.mainfrm.location.href); //framesetを定義したhtml名となってしまう。 alert("window.mainfrm.location.href="+window.mainfrm.location.href); //スクリプト停止 alert("location.href="+location.href); //frame_left.htmlになる。 と、いうことでいずれもダメでした。 このような呼び出し方をした場合、呼び出しもとのhtml名を取得できないのでしょうか。 どうか、よろしくお願いいたします。

  • フレーム名の取得は・・・?

    上下に分割されたフレームページがあります。 上のフレームの名前は既知(仮に「A」とします) 下のフレームの名前は読み込まれたアプリケーションによって 変更されている場合にこれをAの位置から取得することは 可能でしょうか。 A(自分自身)はwindow.nameで取得できるのですが、Aから見た別の フレームの名前を取得する方法がわかりません。

  • フレームのページから新しいページをフレーム外に作成したい

    教えてください。 上下に区切られたフレームウィンドウがあります。 その上部でボタンを押すと、別に新しいウィンドウが現れ、 ボタンを押したフレームウィンドウを閉じるという操作が 上手く行きません。 上部のフレームに開きたいウィンドウが表示されてしまいます。 nw=window.open("new_window.html",window.name,"width=508,height=155"); で何度やっても駄目でした。 何方かご教授をお願いいたします。

  • 複数フレームで「戻る」ボタンを押すと、1フレームしか戻らない

    お忙しいところ申し訳ありませんが、教えてください。 「複数フレームを同時に書き替える」まではわかったのですが、「戻る」ボタンを押すと、1フレームしかページがもどりません。3フレームに分けているのですが、3フレームが同時に「戻る」ことはjavascriptでできるのでしょうか?ちなみにスクリプトは function viewWin(p1,p2,p3){window.open(p1,"frame1");window.open(p2,"frame2");window.open(p3,"frame3");} です。 基本的な質問だと思うのですが、わからなくて困ってます。どなたか教えてください。よろしくお願いします。

  • フレームを入れ子式にする方法

    フレームを使ってホームページを作りたいのですが表示がうまく出来ません。 ホームページビルダー7で作成していますがある程度のタグは読めます。 frame1.htmlを上下に二分割し、フレーム名topとunderを作成  ↓ frame2.htmlを左右に二分割し、フレーム名leftとrightを作成  ↓ topからリンク先をunderにtarget指定してframe2.htmlを表示  ↓ 画面がtop,left,rightの三分割になる 以上のようなことをしたいのですが、right部分のページが表示されません。left部分にtargetをrightに指定したリンクを貼っているのですがクリックすると別窓で開いてしまいます。 フレームの中にフレームを開くことは出来ないのでしょうか?それともリンクの方法等が間違っているのでしょうか? それと、もう一点質問です。 top、left、rightの三つに分割された状態から、leftにあるリンクを使ってtop,underの二分割に戻すことは可能でしょうか? リンクの指定に_topもしくは_parentを使うと全画面にunderが表示されてしまいます。

  • 別フレームで開いたウインドウの制御

    ================ フレームA Aリンク ----------------- フレームB リンクB ================ このような形のページで、 リンクA,リンクBをクリックすると それぞれwindow.openで ウインドウが開く処理をしているのですが、 もし、フレームAのリンクAを選択したときに リンクBのウインドウが開いていた場合、 リンクBで開いたウインドウを閉じてから リンクAのウインドウをオープンするという処理を追加したいのですが、 この場合、どのように処理をすればよいのでしょうか? 御回答、よろしくお願いします。

  • フレーム内から開いたサブウィンドウから親ウィンドウの別フレームの操作を行いたい

    メニュー、メインの2つのフレーム分けしてあるページで、メインページからサブウィンドウを開きます。 その後、以下の2アクションを同時に行いたいのです。 (1)サブウィンドウから親ウィンドウ(メイン)をジャンプさせる (main.html→main2.cgi) (2)親ウィンドウ(メニュー)の画像をAからBに変更させる 現在window.openerでメインページの変更はできているのですが、 メニューページの画像のを変更がうまくできません。 方法としては (1)サブから親ウィンドウ(画像=A)を閉じさせて、再び親ウィンドウ(画像=B)を フレームセットごとムリヤリ開き直す。 (2)何らかの形でメニューページの情報を保存しておき、Onloadでサブからのジャンプ時に変更させる (3)サブから親ウィンドウのフレーム越し操作を行なって、メニューページの画像を変更する。 どの方法が可能でしょうか、もっといい方法がありますか。 お知恵拝借させてください。よろしくお願いします。 以下、かなり省略したソース説明です。 【フレームセット→cgi。記述は省略】 <frameset>  <frame src="menu.html" name="menu">  <frame src="main.html" name="main"> </frameset> 【メニュー→html】 <img src="A"> 【メイン→html】 function open_sub(url) { /**/ w = window.open(url, 'sub') } <!--本文--> <a href="javascript:open_sub('sub.html')">サブウィンドウ</a> 【サブ→html】 function change_main() { window.opener.location.href="main2.cgi?sub"; window.opener.focus(); } <!--本文--> <A HREF="JavaScript:change_main()">メインを変更</A>

  • ホームページビルダーで、アドレスバーにフレーム名をいれるには?

    「ホームページビルダー7 ライト」で、フレームを使ったホームページを作成してます。でもどのページにしても、表示されるアドレスがトップページのものになってしまいます。フレーム名をアドレスの後ろに付けるのは、どうしたらいいのでしょうか?下に表示されるアドレスは、フレーム名がついてるのですが。ぜひ教えてください。

  • window.openのターゲットについて

    ウィンドウをjavascriptで開く際に、 window.open("URL","_top")のように ターゲットを指定できると思うのですが、 今一どこを指定しているのかわかりません。 ページA(フレームで分けられている)からwindow.openでページBを開いた場合、ターゲットに_top,_selfなどと指定した場合はページAのフレームのことを指しているのでしょうか? また今、ページA(フレームで分けられている)でURLをクリックするとファイルをダウンロードするプログラムを作成しているのですが、window.openのターゲットに_topを指定すると新しいウィンドウが表示されないのに、_self,_blankなどを指定するとウィンドウが表示され、ダウンロードが終わっても表示されたままになってしまいます。どうしてこのような違いが起きるのかお分かりになる方がみえましたら教えてください。 よろしくお願いいたします。

  • フレームを介したrefferの取得方法

    C.htmlにてリファラを取得したいのですが、 document.refferでは、B.htmlのURLが取得されてしまいます。 A.htmlを取得したい場合、B.htmlでリファラを取得し、C.htmlへ引継ぐことで 可能でしょうか。 また、どのような方法となるのでしょうか。 ご教授下さいませ。 リンク元:A.html フレーム:B.html フレーム内:C.html D.html <html> <frameset cols="100,*"> <frame src="C.html" name="C"> <frame src="D.html" name="D"> </frameset> <noframes> このページはフレームを使用しています。 </noframes> </frameset> </html>