• ベストアンサー

フレームでページ切りかえの後で関数を実行できないでしょうか

いつもお世話になります。 フレームを左右に分割しています。 左側 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();は、ページが切り替わる前に実行されてしまいます。 つまり、<a href="pa・・・でページを切りかえ、切り替えた後のpage2.htmlのタグ情報を取得したいのですが、page1.htmlのタグ情報を取得してしまいます。 ページが切り替わった後でgetTagName()を実行することはできないものでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • talepanda
  • ベストアンサー率58% (45/77)
回答No.3

><a>タグで行いたいものですので、ちょっと目的が異なります。 動作としては、aタグクリック→page2.htmlに切り替わる→frame_left.htmlでgetTagName()呼び出し、になりますよ。 aタグの中で直接getTagNameを呼び出したいということですか? その理由が良くわからないのですが・・・。

rqg2010
質問者

お礼

talepandaさん、ご丁寧にご指摘ありがとうございました。 page2.htmlの<body onload だったので、これが、frame_left.htmlに反映されるなどと思いもよりませんでした。 できました。 まだ、まだ、まだ未熟者です。 今後ともよろしくお願いいたします。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#1の方法でイイと思いますけど、 page2.html が変更できない場合。 トップページのframeset で <FRAME SRC="page1.html" name="main" onload="frames['left'].getTagName()"> frame_left.html で var flag=false; function getTagName(){ if(flag){ //処理 flag=false; } } … <a href="page2.html" onclick='flag=true;' target="right">ページ2</a>

rqg2010
質問者

お礼

BLUEPIXYさん、ありがとうございます。 教えていただいた方法をいろいろと試していました。 No1の方法を勘違いしていました。 No1の方法でできました。 でも、BLUEPIXYさんのスクリプトはいつもながら感心させられます。 今後ともよろしくお願いいたします。

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.1

page2.htmlの中で <body onload="window.parent.left.getTagName();"> が一番確実かな。

rqg2010
質問者

お礼

talepandaさん、早速レスありがとうございます。 <a>タグで行いたいものですので、ちょっと目的が異なります。 説明不足で申し訳ありませんでした。

関連する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名を取得できないのでしょうか。 どうか、よろしくお願いいたします。

  • フレームページへのリンクで…

    あるページからフレームを使用したページにリンクを張るときに、 そのフレームページのどれかのフレームに   (仮に一つのframeタグのname属性を"left"にするならばその"left"のフレームに) リンクと同時に、任意のページを読みこませる事は可能ですか? もう少し簡潔に言うと、index.htmlなどから、 複数のリンク先を同じフレームページにして(frame.htmlなら全部frame.htmlに)、 そのリンクによって表示させるフレームの中身を(top.htmlとかmain.htmlとかいろいろなものに) 変えられるかどうかって事です。 どうもうまく表現できなくてすいません。 もしできるのであれば、ぜひ教えてください。

  • 教えて下さい。フレームのページの編集が出来ない訳。

    ここ2、3日ろくに寝もしないでこんな時間までやってた甲斐合ってなんとなーくhtmlも読めるようになってきた気がします。 素人ですがどなたかまたお付き合いください。 テンプレートを加工してwebを作っているんですが、 肝心のトップページであるindex,htmlの編集が出来ません。 htmlの作成はもじらのコンポーザーでやっています。。 トップページを読み込んで開くと「不明な理由でこのページは編集出来ません」とメッセージが出ます。ソースを開いて見てみると 下のようなものしかなく、なにか出来ないかと思って頭の部分を入れてみたりしたのですが、次には 「<body>タグがないからです」ってメッセージが出ます。 このトップページってルールだけなんですよね?<body>タグなんてどこに入るんでしょうか? ココを編集してやりたい事は、縦の3分割になっているうちの "index-left.html"の割合が大きすぎて、メニューバーである真ん中のページを足すとほぼ半分ウィンドウを占めてしまい、IEなどに至ってはメインページである右側部分がほとんど見えなくなってしまいます。 それで、左側の"index-left.html"の割合を少なくしたいのですが、 それも重ねてわかりますでしょうか。 環境はMacOSX、ブラウザは基本的にサファリです。IEもネスケももじらもFIREFOXも持ってます。 何を書き込めばいいのか教えて下さい! (このページにあったソースはこれで全部です。) <frame name="l" src="index-left.html"  frameborder="0" scrolling="no"><frame name="menu" src="index-menu.html"  scrolling="no" frameborder="0"><frame name="main" src="index-main.html"  frameborder="0" scrolling="auto"> <noframes><BODY> <p>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</p> </BODY> </noframes>

  • 【PHP】ページの切り替えについて

    HTML で frameset を使用し、例えば、各frame で name="page1" name="page2" name="page3"などと名前をつけて page2 の名前のページを abc.php のページにリンクで変更する場合、page2 のページ内のソースで <a href="abc.php" target="page2">ページ4</a> とし、イメージ的には下記の(1)図の様な感じで、target で指定した frame のページの所だけ abc.php のページに切り替えることができますが (1)図 ┌─────┐    ┌─────┐ │  page1   │    │  page1  │ ├─────┤    ├─────┤ │  page2   │ →  │ abc.php  │ ├─────┤    ├─────┤ │  page3   │    │  page3  │ └─────┘    └─────┘ この仕組みを PHP で、例えば、xyz.php のページで <?php require("page1.php");?> <hr> <?php require("page2.php");?> <hr> <?php require("page3.php");?> require を使用し各ページを読み込み(1)図の様な感じのフレーム式にした場合、page2.php のページからリンクで、page2.php のページだけを abc.php のページに切り替える場合どうしたら良いのでしょうか? イメージ的には下記の(2)図の様な感じです。 (2)図 ┌─────┐    ┌─────┐ │ page1.php │    │ page1.php │ ├─────┤    ├─────┤ │ page2.php │ →  │ abc.php │ ├─────┤    ├─────┤ │ page3.php │    │ page3.php │ └─────┘    └─────┘ ※ 図の線の歪みは気にしないで下さい。すみません。

    • 締切済み
    • PHP
  • フレームページが崩れる。。。

    フレームページを使っているのですが、見る人によってはページの一部が切れて 見えない部分もあるらしいです。ブラウザの大きさを変えてもレイアウトだけは 崩さない為には、どこにどんなタグが必要なんですか? 現在のフレームの親ページのソースです。 <FRAMESET rows="30%,70%" frameborder="NO" border="0"> <FRAME src="ue.html" scrolling="NO" noresize> <FRAMESET cols="20%,80%" frameborder="NO" border="0"> <FRAME src="side.html" scrolling="NO" name="menu" noresize> <FRAME src="main.html" name="main" noresize> </FRAMESET> <NOFRAMES>

    • ベストアンサー
    • HTML
  • マウスオーバーでフレームに対応した内容を表示・・・。

    こんにちは。 いつもお世話になっております。 参考にしたサイト http://www.openspc2.org/reibun/javascript/frame/003/index.html 【内容】 フレーム分割のページ等の内容は以下の通りです。 ●フレーム分割ページ <html> <head> <title>マウスオーバーで右側フレームに対応した内容を表示する</title> <frameset cols="20%,*"> <frame src="code_left.html"> <frame src="code_right.html" name="rightFrame"> </frameset> </head> </html> ●左側のページ(code_left.html) <html> <head> <title>マウスオーバーで右側フレームに対応した内容を表示する</title> <script language="JavaScript"><!-- function setFrame(jpURL) { parent.rightFrame.location.href = jpURL; } // --></script> </head> <body> <a href="#" onMouseover="setFrame('page1.html')">その1</a><br> <a href="#" onMouseover="setFrame('page2.html')">その2</a><br> </body> </html> で、意図した動きが出来たのですが、その1をクリックするとcode_left.htmlが別窓で開いてしまいます。 参考にしたサイトのサンプル画面ではこのような 動きにはならないのに、なぜ別窓が開いてしまうのか がわからないのです。 どうかご指導よろしくお願いいたします。

  • 別フレームからページ切り替え

    こんにちわ。 ちょっと急ぎで解決した問題なんですが よろしくお願いします。 aとbの二つにフレームを分けたページにて aからtop.b.location.href="c.html";として bフレームのページを切り替えているのですが bフレームにhttpsのページを表示した場合、 その後はaフレームから切り替えできなくなります。 (location.hrefを実行する行でエラー) これはセキュリティ上の仕様でしょうか? 回避策などありましたらあわせて教えていただけると 助かります。

  • フレームページで、最大化など枠をコントロールしたい

    次のようなフレームページがあります。 左側 name="left" 、右側 name="right" とします。このフレーム枠を、 以下のようにコントロールしたいです。 ┏━┳━━━━┓ ┃  ┃[←][→] ┃図1 ┃  ┃      ┃ ┃  ┃      ┃ ┗━┻━━━━┛ 図1の状態で、 [→]を押下しても何も起こらないが、 [←]を押下すると、左側フレームが隠され下の図2のように最大化された状態になる ┏━━━━━━┓ ┃[←][→]    ┃図2 ┃          ┃ ┃          ┃ ┗━━━━━━┛ 図2の状態で、 [←]を押下しても何も起こらないが、 [→]を押下すると、隠されていた左側フレームが図1の状態に戻る 自分なりに、次のようにごまかしています。 <a href="#" target="_top">最大化</a> <a href="javascript:history.back()">元に戻す</a> しかし、これですと、 ・図1の状態で[→]を押してしまうと、前の画面に戻ってしまう ・図1の状態で[←]を押すと、最大化されたようになるが、重~~いHTMLを 再読み込みさせられてしまう、  ・・・などの理由で、あまり満足できません。 フレーム枠だけを、もっとスマートにコントロールできたらと思うのですが、 よい方法はありませんでしょうか。

  • ページ切り替えの方法についてです。

    最近まで、フレーム(FRAMESET)でレイアウトを組んでいました。(汗) (参考図) 上フレーム(A.php)name="A" 中フレーム(B.php)name="B" 下フレーム(C.php)name="C" ※ 縦に3段組のレイアウト。 ぞれで、フレームは HTML5 では廃止なり、使用は良くないと言う事で参考図のようなレイアウトを CSSで組んだんですが・・・ 例えば、フレーム使用では 中フレームの B.phpを D.phpページに切り替えをする場合は <a href="D.php" target="B" >Dページ</a> このように target で 簡単に中フレームに D.phpページを表示させる事ができますが CSSでこのような仕組み(ページ切り替え)をする場合はどうやったら良いのでしょうか? イメージとしては・・・ (参考図) 上ヘッダー(#head) 中メイン (#main) 下フッター(#foot) ※ 縦に3段組のレイアウト。 上ヘッダー(#head)の場所で <a href="D.php" >Dページ</a> をクリックした時に 全体をリロードさせずに、中メイン(#main)の場所に、D.phpページを表示したいのです。 できるだけ色んなブラウザに対応する方法で教えて頂けると助かります。 中途半端な知識で対応できず、苦しんでおります。 ちなみに、分かりやすく詳しく教えて頂けると非常に助かります。 もし宜しければ何方か、どうか教えて下さい。宜しくお願いします。  

  • 1クリックで複数のページを開く(片方はインラインフレームに)

    現在フレームを使ってサイトを作っています。 左右2分割で、 左側がmenu.html name=left 右側がmain.html name=right 更に左側のページにはインラインフレームがあり、 frame.html name=sita となっています。 左側のインラインフレームの外にあるリンクを一度押すと、右側のフレームとインラインフレームの中で新しくページが開くようにしたいと考えています。 <SCRIPT language="JavaScript"> <!-- function link1() { parent.right.location.href='aaa.html'; parent.sita.location.href='bbb.html'; } --> </SCRIPT> <A href="JavaScript: link1();">リンク</A> (<body>諸々は略しています) このスクリプトを使用するとインラインフレームの部分が普通のフレームの場合は同時に開くことが出来たのですが、sitaをインラインフレームにすると動かなくなりました。 色々と検索してみたのですが答えにたどり着けずお手上げです。 解決方法をご存知の方、どうぞよろしくお願いいたします。

専門家に質問してみよう