- ベストアンサー
『オペラ』ではページを開けなくするための JavaScript の書き方
個人でHPを運営している初心者です。 インターネット・エクスプローラ以外のブラウザ(ネットスケープ、オペラなど)で閲覧しようとする訪問者を JavaScript でブロックしたいのですが、できるでしょうか。 今のところ、ネットスケープでは成功していて、「申し訳ありません。IE でご覧下さい」と表示して、ウィンドウを閉じるようにできたのですが、オペラではうまく行きません。 あるいは、右クリックをどのブラウザでも完全に不能にする方法はありますか? どなたかご教授下さると嬉しいです。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
先の方の回答にもありますが、JavaScriptで利用しているブラウザの種類を取得しようとしても、Operaはその値をユーザーの意思でIEやNetscapeなどに変更できます。 ですので、Operaもブロックしたいのであれば、Operaが対応していないJavaScriptの記述を利用する対策が必要と思います。 IE5.x以降のブラウザのみをより分けたいのであれば、 if (navigator.appName="Microsoft Internet Explorer") という条件分岐の他に、 if (document.getElementById) という条件分岐を追加すれば、現状では一応は可能です。 後者の「document.getElementById」にはOperaは対応していないので、この条件でOperaをふるい落せます(今後Operaの開発が進んでDOMメソッドもサポートするようになった場合は、この限りではありません)。 ただ、IE以外では見て欲しくないページ自体にこういった条件分岐を設定していても、JavaScriptが有効にされていない環境・ブラウザでは、JavaScriptでの振り落としが機能しません。 ですので、実際に振り分けをするには、そのページに飛んでくる前のページでブラウザをふるいわける仕掛けをJavaScriptで記述しておく必要があるでしょう。 対象のページに入る前段階で、JavaScriptでブラウザを判定し、条件に合う閲覧者だけを次のページに誘導する記述を入れておけば、条件以外のブラウザの利用者やJavaScriptが無効な閲覧者は、そこで次に進めなくなります(その先のページに入った後でJavaScriptを無効にされた場合は対応できませんが)。 右クリック禁止については、どの環境でも等しく適用するのはほぼ不可能でしょう。 JavaScriptでの記述は、JavaScriptが無効にされている環境では無意味ですし、右クリックメニューで出てくる機能を呼び出す代替手段は複数あります。 なお、基本的に、公開されているサーバー上にあるものは、必ずアクセスする手段があるものですので、意図しないブラウザでの閲覧やファイルへのアクセスを完全に排除することはまずできないと思った方が無難です。 また、余計なことでしょうけど、利用するブラウザを制限した場合、それだけ他のブラウザを利用している閲覧者を締め出してしまい、閲覧してもらえる機会を逃す可能性が高くなることにも、一応注意が要ると思います。 参考になれば幸いです。
その他の回答 (1)
Operaの場合、UserAgentを偽る機能を持っているので、Operaを使用している人が、UserAgentをOperaにしていない限り、JavaScriptでもブロックできないと思いますよ。 さらに、JavaScriptの実行をOffにすることも可能なので、そうなったらJavaScriptでブロックしていても意味がありませんし・・・ 公開しているサイトなのですから、どのブラウザでみられても問題がないように作るのが、一番なのではないでしょうか? どうしてもInternet Explorer(以下IE)がいいのであれば、サイトのTOPページに、「Internet Explorerでみてほしい」ということを書いておけばいいのではないでしょうか? #ちなみに、IEにしても、バージョンによって、かなり #挙動が違うので、前IEをOKとするのも危険だと・・・ 右クリックにしてもJavaScriptをOffにしていれば意味がないし、最悪Telnetでソースを取りに行くことも可能ですし・・・正直言って意味がないと思いますよ。 間違いがありましたらご指摘ください。 ではでは☆
お礼
早々とお答え下さったのに、お返事が送れて申し訳ありませんでした。 Opera が変装(?)するとは知りませんでした。さっそく私の Opera を調べてみたら、IE に化けていました。このブラウザ、なかなか曲者なんですね。 興味深いお話、どうもありがとうございました。
お礼
お返事が遅くなりまして、申し訳ありません。 JavaScript でできることの限界がよく分かりました。なかなか道は厳しいようです。具体的で専門的なお話、とても参考になりました。どうもありがとうございました。