- ベストアンサー
フレームで呼び出されるのを拒否したい
最近私のサイトのページが、全く知らない人のサイト内に表示されていて困っています ソースを覗いてみるとどうやらフレームで私のページを呼び出して表示させているみたいなのですが 少し大きめのファイルを置いているページですし、何より知らない人のサイトに表示されているのはあまり気分のいいものではないので、フレームで呼び出されるのを拒否する方法があるのなら教えてください 一応自分で調べたところFRMRというものがフレーム拒否ということはわかりましたが、当方HTMLのタグにあまり詳しくないため どの部分にどのように記述すればいいのかわかりません わかる方いらっしゃいましたら教えてください ちなみに自分のサイトではフレームは全く使用していないので、フレームが全く使えなくなってもかまいません どうぞよろしくお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フレーム内に表示されるのを防ぐだけじゃなくて、完全に拒絶したいということでしたか。 先程のJavaScriptを少しだけ弄ればそれも可能です。 if (top != self) { top.location.href = self.location.href } これは、一番上のフレーム(top)が自分(self)でなければ 一番上のフレームのURL(top.location.href)を自分(self.location.href)にしろという意味です。 top.location.href = self.location.href この部分を次のように書き換えればいいだけです。 ・フレームを破棄する場合 top.location.href = "error.html" ・フレームをそのままにする場合 location.href = "error.html" フレーム内で呼び出さないでという主旨のメッセージでも書いたHTMLファイル(error.html)を作っておいてそれを呼び出すようにすればいいだけです。 error.htmlには閲覧者の事考えれば、フレーム使っているページとは関係ありませんとかのメッセージとともに、 <a href="○○.html" target="_top">こちらから</a> とリンク貼っておく方がいいかも。 #2の回答にあるように、JavaScriptはブラウザで無効にされていると動きませんが、無効にしている場合は稀です。 無効時の対策としては<body>~</body>の間に次の一文入れておくとか。 これは気休め程度です。 <noscript>JavaScritp無効の時にのみ表示されるメッセージ</noscript> URLを変えるのも一つの手ではありますが、その場合はフレーム利用していない他のリンクも切れてしまうという重大な欠点があります。 その人達全員に連絡して書き換えてもらうのも難しいでしょうし。 少し高度なのだと「.htaccess」というのを使って、特定のURLからのリンクを排除するといのもできますが、サーバが.htaccessの設置を許可している必要があります。 http://www.shtml.jp/htaccess/ http://www.htaccesseditor.com/#a_access 注意書きとしてフレーム内での表示をしないようにと柔らかく書いておく事はいいですが、見つけ次第通報するといったような事は書かない方がいいと思います。変な反感を買ったり、普通にリンク貼ろうとしている人も畏縮させる事になる可能性もありますから。
その他の回答 (3)
こんにちは。 僕もJavascriptの使用を薦めたいと思います。 しかし、無理矢理自分のトップページに飛ばすのではなく、トップページにリンクを張った警告用のページを作り、そこに飛ばします。 一手間かかって面倒ですが、飛ばされる側も突然トップページが表示されるよりは不快にならないでしょうし、作る側も未然に阻止する事ができるので、ある程度役に立つと思います。 <script type="text/javascript"> if (top != self) { top.location.href="警告用URL"; } </script> 警告用ページURLを「"about:blank"」にすると、空白ページが表示され、自分のサイトを表示しなくなります。 これが、未然に阻止する第一手段。 これを破られるようだったら、URLを変えます。 これが、事後に対処する第二手段。 Javascriptを無効にすることで回避されてしまいますが、その際はURLを変更するという、二段構えにします。 あと、変な事も考えていたので参考に・・・(ならない^^;) ・肝心な部分をJavascriptで表示して、javascriptを無効にする回避をさせない ・ページ全体を<div id="xx">で囲んで、javascriptが無効な場合はCSSで非表示にする(苦笑)
お礼
回答ありがとうございます 警告ページを作ってそこに飛ばすこともできるのですね さっそくこの方法を使わせていただきます javascriptが無効の場合の対策まで考えていただいて本当にありがとうございます
- pick52
- ベストアンサー率35% (166/466)
取り敢えず、URLを変えるのがいいのではないかと思います。 JavaScriptはブラウザ側が対応していなかったり無効にしていると 動作しませんし。 それより、まったく無関係の他人のページをフレームで埋め込むのは ウェブ上でマナー違反ですのでサイト管理者またはサーバ管理者に 連絡して対応して貰ってください。 完全に駆逐することができないというのが難点ですけど...。 発見し次第、通報するというようなことを書いておけばむやみに 取り込む人はいなくなると思います。
お礼
回答ありがとうございます そのページはたくさんの方にリンクしていただいているので できればURLを変更したくないと思い相談させてもらっています フレーム埋め込みをしているサイトは私が確認しただけでも ハンガリー、中国、韓国、ロシア、など色んな国ですので管理者に連絡という方法もなかなかできないでおります 技術的に無理だった場合はURLの変更を利用させていただきますね
- dezimac
- ベストアンサー率56% (2365/4208)
以下のページで紹介されているフレームバスター(JavaScript)を組み込んで下さい。 http://www2.plala.or.jp/Cool/okite/red06.html <head>~</head>の間なら何処でもいいから、次のコードをコピー&ペーストするだけです。 <script language="JavaScript"> <!-- if (top != self) { top.location.href =self.location.href } //--> </script> > FRMRというものがフレーム拒否と 残念ながら、これはウェブサイト(HTML)のフレームとは全くの別物で全く関係ありません。
お礼
回答ありがとうございます さきほど試してみましたが、これは強制的に自分のページにしてしまうというものみたいですね こういったページからは全く表示できないようにしたいのですが、無理だったらこの方法を使わせていただきますね FRMRは違うものだったのですね こちらも教えていただきありがとうございます
お礼
二度目の回答と詳しい説明をしていただきありがとうございます フレームで表示してくるサイトはほとんどが海外のサイトで今までは.htaccessで拒否していたのですが、最近急増して対応しきれなくなってきたのです。 この方法だと最初に書いておけばよさそうなので利用させていただきますね ありがとうございました