• ベストアンサー

フレーム内でしかも、左側の細い部分にあるか判別

そのページがフレーム内でしかも、よくある左側のメニューのページのような細い部分にあるか判別するというような方法はありますか。 フレームの中ならという部分は if (self != top) { top.location.href = self.location.href; } でよいかと思うのですが、左側とかそのようなことはなんらかのテクニックで取得できますか。

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

  • ベストアンサー
  • 665
  • ベストアンサー率72% (18/25)
回答No.2

frameset要素のcols属性を確認することで最も左のフレームかどうかを判断する関数を作ってみました。 やたらと長くなりましたがframesetが多重になっていても大抵の場合で左のフレームかどうかを調べることができると思うのですが。 function isSelfLeftFrame() { if (self == top.frames[0]) { var node = top.document.getElementsByTagName("frameset")[0]; var frm = top.document.getElementsByTagName("frame")[0]; if (frm && searchNode(node, frm)) { return true; } } return false; } function searchNode(node, frm){ if (node && node.cols) { node = node.childNodes; for (var i = 0; i < node.length; i++) { if (frm == node[i] || searchNode(node[i], frm)) { return true; } } } return false; } 次のような条件判断文で左フレーム内のページであった場合の処理が行えます。 if (isSelfLeftFrame()) {...}

nakada789
質問者

お礼

回答ありがとうございました。 >frameset要素のcols属性を確認することで おかげ様でやりたいことはこれで問題なく利用できました。 ちょっと私にはむずかしい内容でした・・。(-_-;

その他の回答 (1)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

厳密に判別できるかわかりませんが、 たとえばウィンドウのサイズを window.innerWidth document.body.clientWidth などで取得して、細いかどうか判断するとか。 左か右か、というのは、ちょっと難しそうですね。 環境に依存しますが、何かのイベントでscreenXを調べるとか、 nameがleftだったら、とか…、確率の問題になってしまいますが。

nakada789
質問者

お礼

回答ありがとうございました。 簡易的にはいろいろ方法がありそうですね。 やりたいことは単純な内容だったので、アドバイスの方法で処理できそうです。

関連するQ&A

  • フレーム&リファラ

    content1.html のページからリンクして、 frame.html(menu.html , content1.html) を表示するにはどのような方法があるでしょうか。 *.html からのリンクで、 frame.html(menu.html , *.html) を表示させるようにする記述を教えていただきたいです。 一応、フレームは cols="120,*" として120の方が menu.html です。 また、frame.html(menu.html , *.html)が表示されている状態で、 menu.htmlの方のリンクで、*.htmlだけを表示する(フレームを解除する)ことは出来るのでしょうか? ページのURLはlocation.hrefで取得できますが、どのように応用すればよいのかという感じです…。

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

  • フレームを使わずに、左側にメニューを表示したい

    目的:フレームを使わずに、左側にメニューを表示したい。 最近、多くのサイトで見られるのですが、フレームを使っていないのに、左側にメニューが表示されています。このメニューは各ページで同じになっています。これはどのようにして作るのでしょうか。HTML作成ツールを使っているのでしょうか。私は手書きでページを作成していますが、メニュー部分が変更した時の修正が大変そうです。

    • ベストアンサー
    • HTML
  • フレーム復元をさせない!事は可能ですか?

    とっても初心者です。 これまで、既存ページ(こちらでは変更不可)のフレームのメインにだけリンクを貼り、別のメニューを上につけてページを表示していました。 こちら側は、CSSとHTMLで作ったページです。 ところが、先日、メインコンテンツの方に下記のようなjava scriptが追加され、これまでのままだと、メニューがダブルで表示されてしまうようになってしまいました。 もし、こちら側のページの記述で、「フレーム復元」を解除できる事が可能でしたら、お教えいただけないでしょうか? 宜しくお願いします。 //-------------------- // フレーム復元 //-------------------- if(navigator.userAgent.indexOf('Opera') == -1) { if (self.name != 'audio_main' && self.name != 'visual_main' && self.name != 'shop_main') { document.open(); document.write('\ <html>\ <head />\ <frameset rows="100,*" frameborder="NO" border="0" framespacing="0">\ <frame src="http://xxxx.html" name="visual_top_frame" scrolling="NO" noresize>\ <frame src="" name="visual_main">\ </frameset>\ </head>\ '); document.close(); window.open(location.href, 'visual_main'); } }

  • (CGI)お気に入り登録やアドレス直打ちを防ぐには?

    フレームページ等を使用していてフレーム内のアドレス直打ち、それによるお気に入り登録を防ぐには以下のタグが有効ですよね?↓↓ <SCRIPT language="javascript"> <!-- if (!document.referrer){top.location.href="http://************";} //--> </SCRIPT> または、 <script language="JavaScript"> <!-- if(self ==top){location.href = "http://*****";} // --> </script> この「アドレス直打ち、お気に入り登録を防ぐ機能」をCGIで表す事は可能ですか? 可能ならば、とどのようになりますでしょうか? CGIで作成した掲示板の中に挿入して防ぎたいのですが・・ 宜しくお願いしますm(_ _)m

    • ベストアンサー
    • CGI
  • 違うフレームのURLを取得したい

    いつもお世話になっております。 上下でフレームが分かれていて、上にメニュー、下に内容が表示されます。 下に表示されているURLによって、上のメニューのボタンの色をVBScriptのIF文を使って変えたいと思っています。 そこで、下のフレームに表示されているURLを上のフレームで取得したいのですが、どうしたら実現できるでしょうか。 JavaScriptでparent.下のフレーム名.location.hrefとすれば、URLを取得できることまでは調べたのですが、JavaScriptからASPに値を渡す方法が分かりませんでした。 ASPだけでURLを取得する方法か、JavaScriptで取得した値をASPに渡す方法のどちらかをご存知の方がいらっしゃったら教えてください! よろしくお願いいたします。

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

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

  • フレーム上部分を引っ張り込むリンク方法

    少し複雑なので文章で説明できるといいのですが・・・ まずTOPページがあります。 次にフレームで上下に分割したメニューページ「A」があります。 「A」の上部分はメニュー項目なので固定です。 下部分は「B」「C」と色々変わっていきます。 通常「A」→「B」にリンクする時は、ターゲットで指定してあげると ちゃんとフレームの上部分も付いてきますよね? 問題は、TOPページ→「B」にリンクしたときは、当然ながら上部分のフレームは外れてしまいます。 この場合の解決策は、すべての「B」「C」にフレームを付けるというので解決できますが、これが膨大な量なのです。 この場合、JAVAスクリプトでもなんでもかまいませんが、上部分のフレームを引っ張りこめる方法を教えて下さい。

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

    トップページ(フレームなし)から、フレームページへのリンクがうまく表示されません。 トップページのリンクボタンをクリックすると、左側フレームのメニューは表示されますが、右側の内容のページが「Not Found」で表示されません。 が、表示されたフレーム左側のメニューをクリックすると表示されます。 トップページから、左右両方表示させるのにはどうすればよいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • フレーム内ページかの判別方法

    こんにちは。 ホームページを作成、公開しております。 フレーム構造を使っており左側にメニュー(menu.html)、右側に内容(main.html)があるものとなっています。 (フレームページは、index.html) このページを検索エンジンに登録したのですが、フレーム内のページ(例えばmain.html)が検索に引っかかることもあり、メニューが表示されないので効率的にブラウズできません。 そこで、そのような表示がされた場合に自動的にフレームページ(index.html)へジャンプするようにしたいのですが、なにか方法はあるのでしょうか? ちなみにサーバーでは、各種スクリプト,CGI,SSI,ASP,PHPが利用可能です。

    • ベストアンサー
    • HTML

専門家に質問してみよう