• ベストアンサー

フレーム以外には表示させないようにするには

CGIからフレームを使ったHTMLページを出力するプログラムを作成しています。 ページは単純に  ・左側にメニュー  ・右側にメインページ という構成と考えていただければ良いです。 このとき、メニューから右クリック「新しいウインドウを開く」等を使って 別ウインドウで開く動作をされないように制御することは可能でしょうか? 実現方法を教えて下さい。

  • CGI
  • 回答数7
  • ありがとう数5

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.7

> 確かJavaScriptを使用すれば現在のウィンドウにいくつの > フレームがあるのかを調べることが可能だったはずなので > もし、これが1だったらウィンドウを強制的に閉じるように > すれば良いかも知れません。 これは探してみました。 以下のようにしてみて下さい。 例 「a.html」 <html> <head> </head> <body> <script language="javascript"> <!-- if(window.document.forms.length == 0) { window.self.close(); } //--> </script> <a href="a.html" target="_blank">新規ウィンドウ</a><br> <a href="a.html" target="a">既存ウィンドウ</a> </body> </html> 「b.html」 <html> <head> </head> <frameset rows="*" border=0 frameborder=1> <frame src="a.html" name="a" scrolling=yes> </frameset> </head> </html> ただし、IE6.0SP2ではデフォルトで動作しないように なっているようです。(^_^; IEコンポーネントを使用しているプログラムからは 動作確認しました。 でも、クライアント側がJavaScriptを有効にしていない と効果がありませんのでご注意下さい。 (試していませんが自動で閉じるのではなくメッセージを 表示させるくらいならOKかも?) もしかすると危険なことやっている可能性もありますので もっと博識な方がいらっしゃればと思いますが・・・。 取り敢えず、もうかなり後ろの方に行っているので 一度質問を終了させ新たに質問し直した方がいいかも しれません。

参考URL:
http://tohoho.wakusei.ne.jp/js/form.htm
taku_pan
質問者

お礼

お礼が遅くなりました。 ・JavaScriptの使用 ・擬似フレームの作成 の両方を検討してみたいと思います。JavaScriptはあまり使用したくない気もしますが・・・。 どうもありがとうございました!

その他の回答 (6)

  • pick52
  • ベストアンサー率35% (166/466)
回答No.6

もう一度質問をよく読んでみたら↓ではちょっと足り ませんね。 すみません。(_ _) 確かJavaScriptを使用すれば現在のウィンドウにいくつの フレームがあるのかを調べることが可能だったはずなので もし、これが1だったらウィンドウを強制的に閉じるように すれば良いかも知れません。 (ちょっと方法は忘れました) ただし、これもJavaScriptを使用しないようにしている 場合は効果ありませんし・・・。 同サイト内からの新規ウィンドウ禁止は各設定のこと などを考慮するといろいろ難しいです。 あとは、注意書きを書いておくくらいしか方法がありませんね。 それでも見ていないのかしてしまう人はいるのであまり 効果は期待できませんが・・・。 (それでも多少は効果ある?) リンクをアンカータグにせず、フォームボタンを使用 すれば新規ウィンドウで開くことを多少は押さえること が出来ると思いますがこれもよくタブブラウザなどに ついているナビゲートロックまたはシフトロックなどと 呼ばれている機能を使用されると効果ありませんね。 見た目も良くないですし。 いろいろ長く書いていますが書いている途中でふと 思いついた事も少し混ぜて書いています。 (つまり思いつきなので効果あるかどうかは分かりません) 一番いいのはFlashなどのHTMLの制約を一切受けない コンテンツにするかJavaScript(window.location.href) などで移動させることによって無効になっている環境 では使用できないようにするとか・・・。 どれも対象はWinのIE向けで他のOSや他のブラウザでの 動作は不明ですが。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.5

↓あと、ホスト名の取得に対応していないサーバ上でも 動作しません。 リファラも使用しているのでリファラを意図的に変更されて いても動作しないのでそんなに効果ないですが・・・。 他にもリファラが同サイト内なら新規ウィンドウで開いた 場合も開いてしまうなど問題は多いです。(^_^; (まだ、気が付いていない問題があるかも?)

taku_pan
質問者

お礼

ありがとうございます。 ソースを見ただけですが、なんとなく意図は理解できました。 ある程度の制御の手助けにはなりそうです。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.4

既に、解決しているかもしれませんがCookieとRedirectを 利用すれば以下のようなことが出来ます。 ただし、Cookieを無効にしている環境やCookie/Redirectに 対応していないブラウザでは正常動作しません。 http://www.geocities.jp/customcgi/ftest.cgi.html

参考URL:
http://www.geocities.jp/customcgi/ftest.cgi.html
  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.3

私が#1で書いた理由によって、ページが勝手に利用者の操作に対する制限はできない、 ということをいいたかったのですが、お分かりいただけたでしょうか? もし、どうしても制限するとしたら、そのような制限を行なうユーザーエージェント (ブラウザなど)を用意し、利用者にそれを使ってもらう以外にありません。 FlashやJavaなどといった技術により、そのような処理は可能ですが、CGIなど、 通常のHTML文書として動作する場合、対応できません。 「とにかく達成感を得たい」というのであれば、JavaScriptによる対応が楽しいかもしれません。 例えば、フレームの名前が下記のようになっていて、 +-----------+ | menu | body | +-----------+ "body"を単独で開かせたくない場合、下記のようなスクリプトをヘッダに記述することで、 回避できるでしょう。 <script language="JavaScript" type="text/javascript"> <!-- if( self != top.body ){ self.location.href = "http://www.*****"; } // --> </script> ※当然ながら、JavaScriptが無効となっていた場合は動作しません。

参考URL:
http://tohoho.wakusei.ne.jp/www.htm
taku_pan
質問者

お礼

#1で書いて頂いたとおり、不可能ということですね。 回答ありがとうございました。参考になりました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

Javascriptでonclickでwindow.openさせれば新しいウィンドウで開くは防げると思います。 もしくはFORMボタンにするとか。

taku_pan
質問者

お礼

ありがとうございます。

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

結論から言うと、不可能です。 以下、想像してください。 ・ユーザーエージェントでフレームページを扱えないものは一体どうすればいいのでしょう? ・画面が狭くてフレームだと狭すぎて見えない人は? 技術的には、 ・リンクをコピーして、新しいブラウザでオープンされた場合は? ・リンクをSHIFT+クリックされた場合は? ・ブラウザによっては、リンクのドラッグ&ドロップやホイールクリックで新規ページで開けるものもあります。 対応としては、 ・フレームページにしない。→iframeやCSSによる擬似フレームページ化など。 ・あきらめる。

taku_pan
質問者

お礼

回答ありがとうございます。 > 結論から言うと、不可能です。 ありがとうございます。 > 以下、想像してください。 > ・ユーザーエージェントでフレームページを扱えないものは一体どうすればいいのでしょう? > ・画面が狭くてフレームだと狭すぎて見えない人は? これらは別問題だと考えています。そもそもフレームページが表示できない、または表示しても意味が無いということで。 > 技術的には、 > ・リンクをコピーして、新しいブラウザでオープンされた場合は? > ・リンクをSHIFT+クリックされた場合は? > ・ブラウザによっては、リンクのドラッグ&ドロップやホイールクリックで新規ページで開けるものもあります。 この辺を解決したいのです。 (フレームページからのリンク以外は遮断するような上手い方法、または付け焼刃でも実現可能な方法を。) > 対応としては、 > ・フレームページにしない。→iframeやCSSによる擬似フレームページ化など。 > ・あきらめる。 iframeはともかく、擬似フレームを生成すると考えた方が良いかもしれませんね。

関連するQ&A

  • フレームが表示されない

    と言っても、HPを作っている者ではありません。 ネットをしていると、時々フレーム表示ができないサイトがあります。 つまり、基本のフレーム表示(左側にメニュー、右側に初期内容)はできるのですが、左側のメニューを押下しても、右側のフレームが切り替わらないのです。 全てのサイトでフレーム表示が出来ない訳ではありません。 こちらのサイトだと、左側のメニューを押下すると右側に正しく表示されます。 http://www2.csc.ne.jp/~eiya/1a/ta1.htm しかし、例えば2chのトップページで左側のメニューを押下しても、右側のフレームが切り替わりません。 無反応です。 ステータスバーに進行状況表示もされません。 サイトを最新の情報に更新した後に押下しても状況は変わりません。 http://www2.2ch.net/2ch.html ちなみに、2chの左側に表示されているメニューを右クリック→新しいウィンドウで開くを選択すると、右側のフレームに表示される内容が新しいウィンドウで表示されます(だからネットができないという訳ではないです)。 右クリック→開くだと無反応で、上記と同じ現象です。 どういった理由が考えられるでしょうか? もしくは上記2つのフレームを使ったサイトに何か違いがあるのでしょうか? IEのVer.6.0 WindowsXP ウイルスバスター2006 よろしくお願いします。

  • フレームを使わないでフレームっぽくみせるには?

    ホームページを製作しようと思っています。 そこで3カラム型の感じのデザインにしたいと思っているのですが、 ページ数を結構つくらなければいけないので、左側にメニュー、右側に広告を張って、真ん中はメインの内容にしようとすると、やはりフレームを使うのが便利なのです。 広告の関係上、広告をインラインフレーム内などに入れることができないので非常に悩んでいます。 フレームを使わないで3カラム型のようなホームページを作るとなると、すべてのページを1個ずつひらいて更新するしかないでしょうか。 メニューをふやしたり、サーバー移動となると気が遠くなりそうで・・・ よろしくお願いいたします!

  • ビルダー5.0 フレームのリンクの仕組みを教えて下さい!

    現在作っているホームページは、左側にメニュー項目をつねに表示させながら、その項目をクリックすると、右側のメインのページで確認できるような作りになっています。 そこで、左側のメニューの中から、リンクしたい項目を範囲指定→リンクの挿入でファイルにリンクしたいページを指定したいのですが・・・ 今まで、一ページ作り終えるごとに、左側、右側とその両方の計3ページを保存してきました。 その中の、どれにリンクをつないだらいいのでしょうか? どうしてもうまくできなくて、右側のメインページにもうひとつのメニューとメインページが同時に出てきてしまったり、メニュー画面が消えてしまったりするので困っています。 また、購入した本では、「ターゲット」ドロップダウンリストで新しいウィンドウ、同一ウィンドウ、親ウィンドウ、全画面の下に、更にcontentsとmainという項目が選択でき、その右側にフレームの位置を表す絵が表示されているのですが、私のそのリンク先のファイル選択の画面では、それがありません・・・ 「ターゲット」にある4つのウィンドウについての解説もしていただけると、とても助かります・・・ 初心者の質問でごめんなさい。 ご回答お願いします。

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

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

    • ベストアンサー
    • HTML
  • フレームを使わずに右側だけを切り替える

    個人で絵のサイトを作ろうとしています。 HTMLとCSSで作り、画面を半分に分けて左側がメニューで右側に絵が表示されるというよくある形が目標です。 フレームを使わずに、overflowでスクロールできるようにしたのですが、問題はメニューで右側に絵を表示させる際にこのままだとメニューを切り替えるたびにリンクがページごと切り替わる点です。 メニューの数がある程度限られていれば、左側が同じページをいくつもつくり右側だけ変えるようにできますが、絵の数が増えればそのたびメニューの項目がいくつと増えていきます。 そのたび今まで作ったページたちの左側をいちいち編集しなければいけませんよね?それはめんどくさい… 今目指すレイアウトでフレームを使わずに右側だけ切り替える、もしくは絵を更新するたびにひとつひとつ書き換えにいかなくても済む方法はありますでしょうか? 同じような質問はいくつもあるのですがなかなか解決にたどり着かないので質問させていただきました。 以上の内容でよろしければ回答お願いします。

    • ベストアンサー
    • HTML
  • CSSでフレーム

    ご存知の方いらっしゃいましたらお教えください。CSSを利用してフレームのような動作をさせるにはどうすればいいのでしょうか?たとえばフレームにおいて仮にナビを左に、メインページを右にしてある場合、ナビのリンクのアクションがメインフレームへ該当するHTMLファイルを呼び出しますが、CSSでこの動作をさせることが出来るのでしょうか。参考になるHPなどございましたらお教えください。よろしくお願いします。

  • フレームの事

    フレームの事で困っています。 私の場合、右と左で分けたいのですが、それぞれが独立しているらしく、左にメニューを表示させて、右側に出したいのに、左側にリンク先が出てしまいます。(上の広告はちゃんと消してあります。)タグが間違っているのかと思ったのですが、辞書の通りやったので、間違ってはいないと思います。強制的に左のメニューから右のメイン画面に開かせるというのはできないのでしょうか。 もし、出来ないにしても、解決方法があれば教えてください。

    • ベストアンサー
    • HTML
  • フレームの再表示

    2つのフレームがあるHTMLで、左にメニューがある場合に メニュークリックで右にそのメニュー対応のHTMLコンテンツが表示されるのは 一般的なパターンだと思いますが 再表示ボタンを押すと、どうしてもTOPに戻ってしまうんです。 index.htmlの再表示ならそう書いてあるので当然とも言えるんですが、不便です。 同様なページで、そうならない(リンクそのままで再表示される)ところもありましたが どう見ても違いが分かりません。 なにか特殊な仕掛けが必要なんでしょうか??

  • フレーム内のページ表示について

    メニューとメインでフレームのページを作っています。 メインページに直接訪れた人の為に、「メニューが表示されない場合はクリック」とフレームページのリンクを作ってあります。<A href="index.html" target="_top"> フレームページ(メニュー)は表示されるのですが、次にメニュー項目をクリックすると、全画面でメインページがでてしまい、またメニューが見えなくなってしまいます。 ふつうにフレームページ(index.html)を開いた場合は、ちゃんとメインフレーム内に各ページが表示されるので、なぜメインページのリンクからだとそれができないのかがわかりません。 フレーム名はメニュー=menu メイン=mainとして、メニュー各項目のリンクは<A href="001.htm" target="main">としてあります。 説明が下手でごめんなさい。よろしくお願いします。

    • ベストアンサー
    • HTML
  • プルダウンメニューとフレームについて

    はじめまして。 フレームを上部分とその下に左と右に設定しており、左の部分にメニューを作成したのですが、そのメニューが階層式(オンマウスにすると右側にまたメニューが出るもの)なんですが、右側に出たメニューがフレームで設定していると左側のフレームに隠れて見えなくなってしまうのですが、見えるようにするのはどのような設定にすればよろしいのでしょうか。教えてください。よろしくお願いいたします。

専門家に質問してみよう