• ベストアンサー

親フレームの存在確認

フレームページで、子フレームが単独で呼び出された時にエラーを表示したいです。 親フレームとなるindex.htmlでは、それぞれa.phpとb.phpを呼んでいます a.phpでは、a.htmlを読みこんでいます。 このa.htmlが単独で呼び出された時に、index.htmlにアクセスするようにアラートを表示したいのです。 if(!window.opener || window.opener.closed) を試してみましたが、フレームのある状態でもフレーム無しの処理が走ってしまいます。 何か良い方法、改善点等ありましたら教えてください。 よろしくお願いいたします。

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

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

>javascriptのファイル名, だけじゃない、全部おかしいんだ(汗 作業元のQ3134334をコピーして使ったから。 修正箇所 【誤】 <script type="text/javascript" src="Q3134334-1.js"></script> 【正】 <script type="text/javascript" src="Q3136302-1.js"></script> この変更に伴いjavascriptファイルのファイル名をQ3136302-1.js に変更してください =========== 【誤】 <frame src="Q3134334-1.html" id="hoge" /> <frame src="Q3134334-2.html" id="fuga" /> 【正】 <frame src="Q3136302-1.html" id="hoge" /> <frame src="Q3136302-2.html" id="fuga" /> =========

-melissa-
質問者

お礼

大変丁寧な回答をしていただきましてありがとうございます。 おかげさまで解決しました。

その他の回答 (2)

回答No.2

#すみません javascriptのファイル名,他と統一し損ねましたが、許してください(汗

回答No.1

===============Q3136302-1.html=================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>テスト</title> <style type="text/css"> p{background-color:red;} </style> <script type="text/javascript" src="Q3134334-1.js"></script> </head> <body onload="check();"> <p>ほげ</p> </body> </html> ===============Q3136302-2.html=================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>テスト</title> <style type="text/css"> p{background-color:yellow;} </style> <script type="text/javascript" src="Q3134334-1.js"></script> </head> <body onload="check();"> <p>ほげ</p> </body> </html> ===============Q3136302-3.html=================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>テスト</title> <style type="text/css"> p{background-color:yellow;} </style> </head> <frameset cols="50%,50%"> <frame src="Q3134334-1.html" id="hoge" /> <frame src="Q3134334-2.html" id="fuga" /> </frameset> </html> =========Q3134334-1.js=========== function check(){ if(parent.document.URL == document.URL){alert('単独')}; } 【重要な注意】 1. IE 7 と Minefield(Firefox 3.0a7pre)で確認。OperaとSafariでは未確認。 2. 当然ながら、javascript無効な環境では動作しない 3. サンプル中にはnoscriptやnoframes要素は含まれないが, 実際に使用する時には含めること。

関連するQ&A

  • 親ウィンドウの別フレームを子ウィンドウから操作したい

    いろいろ試しているのですが、理解不足のせいでしょうが、どうやってもできません! 内容は以下の通り(分からないのは3)です。どうぞ宜しくお願いいたします。 1:画面を、AとBの2つのフレームに分割しています。 【index.html】 <frameset>  <frame src="A.html" name="A">  <frame src="B.html" name="B"> </frameset> 2:Aフレーム内に記述してあるaaaアンカーをクリックすると、子画面ko.htmlを開きます。 <a href="javascript:void(0)" onclick="window.open('path=ko.html','_blank');">子画面</a> 3:ko.htmlではbbbというアンカーがあって、それをクリックすると、"親画面のBフレームにbbbで指定したリンク内容を表示したい"のです。 <a href="javascript:void(0)" onclick="opener.window.location=('B?path=/home/~/~/ZZZ.html');">開きたいファイルZZZ.html</a> と書くと、openerはAだからAにZZZ.htmlの内容が表示されてしまうので、(全くおかしな記述をしているのかもしれませんが・・・(- -;))あちこち調べながら、 B.opener.window.locationとか、 B.opener.window.location.hrefとか、 parent.B.window.locationとか、 parent.frames[1].window.locationとか、 ほかにもいろいろやってみたのですが、出来ませんでした・・・。 このような別フレームの操作が出来る方法があれば教えてください。 宜しくお願いいたします。

  • 親タブから子タブ開いて親タブへ戻す。

    以前、ここで質問をしたものです。 まだ、解決していません。 window.opener.focusが利かないと質問したものです。 親タブ(ウインドウ)から子タブ(ウインドウ)をひらいて そのリンク先を親タブ(ウインドウ)で制御しようとしています。 自分でいろいろやりましたが、現在chromeのみで動いています。 Firefox、IEでは動いていません。 他に良い方法はないでしょうか? 現在のコードです。 親<index.html> <html> <head> <title>TOPページ</title> <script type="text/javascript"> <!-- var win; // サブウィンドウを開く処理 function disp(url){ win = window.open(url, "oya"); } // --> </script> </head> <body> <p><a href="example_sub8.html" target="_blank" onClick="disp('example_sub8.html')">testサブウィンドウを開く</a></p> </body> </html> 子ウインドウ<example_sub8.html> <html> <head> <title>testサブウインドウ</title> <script type="text/javascript"> <!-- // リンクの処理開始 function disp(url){ if(!window.opener || window.opener.closed){ // メインウィンドウの存在をチェック window.alert('メインウィンドウがありません'); // 存在しない場合は警告ダイアログを表示 } else{ window.blur(); window.opener.focus(); window.open(url,"oya"); //window.opener.location.href = url; // 存在する場合はページを切りかえる } } // リンクの処理終了 // --> </script> </head> <body> <ul> <li><a href="#" onClick="disp('index.html'); return false;">トップページ</a></li> <li><a href="#" onClick="disp('index2.html'); return false;">test2ページ</a></li> </ul> </body> </html>

  • frame1のフォームに入力したデータを、frame2とframe3に渡したい

    index.html内に3つに分かれたフレームを作成し、 「frame1.html」「frame2.php」「frame3.php」を表示させています。 「frame1.html」にはformがあり、そこに入力したデータを 「frame2.php」と「frame3.php」に渡して処理を行わせたいのですが、 うまくいきません。 色々調べてjavascriptで渡そうと思ったのですが、 javascriptの変数に格納されたデータを、 phpの変数に格納する方法が分からずに挫折しました;; やはりこういう処理はjavascriptでしかできないのでしょうか? javascriptは勉強不足であまりわからないので、 出来ればphpだけで処理したいのです。 どなたかいい方法を教えて下さい。 どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • 子ウィンドウの存在確認

    子ウィンドウが開いていない場合にのみ子ウィンドウを開くような下記の処理があるとします。 function OpenSubWindow() { if(!w.closed()){ alert('閉じろ!'); }else{ w = window.open("a.html","sub","resizable=no,scrollbars=no"); } } この場合、当然のことですが、変数wはelseの中で初めて初期化されるため、ifの条件でオブジェクトが存在しないことによりエラーが発生します。 でも、"sub"というname属性のウィンドウが開いているかどうかを確認したいのですが、どうすればよいのでしょうか?wを初期化する方法が何かあるのでしょうか?それとも、subウィンドウのopen/closeの状態を管理するロジックを作りこまないといけないのでしょうか?

  • フレームについて

    今までフレーム機能の表示で携帯とPCに分けていましたが、最近はうまく表示できません。 <frameset cols="190,*" frameborder=0 border=0> <frame src="content.html" name="hidari"> <frame name="migi" src="index.php"> <noframes> <A HREF="index.php">PCの方はこちらへ</A><BR><BR> <A HREF="Mobility/index.php">携帯の方はこちらへ</A> </noframes> </frameset> 現状はこんな感じです。 何処が悪いのでしょうか? 何か携帯とPCを簡単に分ける方法はありませんか?

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

    メニュー、メインの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>

  • フレームで呼び出した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名を取得できないのでしょうか。 どうか、よろしくお願いいたします。

  • サブウィンドウから親ウィンドウのファンクションを起動

    おせわになっております。 サブウィンドウから親ウィンドウのファンクションを起動する方法について困っています。 親ウィンドウから var subWin = window.open("a.html", "sub") でオープンしたサブウィンドウを閉じる場合に サブウィンドウから親ウィンドウの function sub_close() { subWin.close(); } を呼び出して閉じる処理をしています。 (サブウィンドウでwindow.opener.sub_close()) #これは正常に処理されます。 ここで問題なのですが、サブウィンドウがフレームの場合に、フレームセットされたHTMLから window.opener.sub_close() というような方法では親画面の操作ができないのでしょうか?(できませんでした。) 初歩的な質問で申し訳ないのですが、何かよい方法があれば教えてください。 宜しくお願いします。

  • 親フレームのURLによって、条件分岐する方法。

    具体的に書きますと、親フレ-ム「fr.html」のフレーム内で「A.html」を開いた場合と、それ以外の方法で「A.html」を開いた場合で、開いた瞬間に飛ばすページを分けたいのです。 注意)どこから開かれたかは関係なくです。ですから、window.openerは使わないと思います。 本当に初心者ですので、<head></head>の間にいれる、スクリプトをそのまま書いてくれると嬉しいです。 結構急ぎなので、(みなさんもそうでしょうが・・・) よろしくお願いします。

  • ウインドウ元のURLをフレームごとかえる

    小ウインドウを開いて、URLをクリックすると元のページのURLがかわるという方法を教えてください! 下記の書き方だと、フレームの中に新しいページが表示されてしまいます。 フレームごと書き換えるには、どうやって書けばよいのでしょう? <script language="javascript"> <!--// function ctrlwin() { window.opener.location.href="http://www.××.html"; window.close(); } //--> </script>

専門家に質問してみよう