• ベストアンサー

スタイルシートでの「右クリック禁止」の書き方

右クリック禁止のタグは↓を使っています <body oncontextmenu="return false;"> これをスタイルシートで使う場合の記述は どのように書くのでしょうか。 ご教授 お願いいたします。 なお 右クリック禁止しても 簡単に破られるのは承知の上です

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

  • ベストアンサー
  • MAN_MA_RUI
  • ベストアンサー率41% (426/1024)
回答No.4

> JAVAは敷居高いので各ページに<body oncontextmenu="return false;"> > 埋め込んだ方が無難かなと思いました JavaとJavaScriptは別物であり、後者の略称がJavaであるわけでもなく、また後者の略称としてJavaという言葉を用いるのも適切ではありません。 http://e-words.jp/w/Java.html http://e-words.jp/w/JavaScript.html CSSはレイアウトの定義を行うものだし、右クリック禁止で使っているoncontextmenu="return false;"自体がJavaScriptです。 oncontextmenu,onload,onmousemove,onclick,ondoubleclickなどマウスやキーボードなどの特定の動作を感知して何らかのアクションを起こすものは全てHTMLではありません。HTMLの属性として利用できるものであってもHTMLを使用しているわけではないという状態です。 で、CSSを使って同様の動作を実現することは不可能です。ブラウザの挙動に関して何らかの制御を行うものはHTMLないしJavaScriptで行うのが普通です。 (独自拡張の類まで入れるとCSSの設定でブラウザのシステム関連を呼び出すものはありますけど…。) さらに、その方法だとIEだけしか制御できません。 下記に挙げたようなパターンや参考リンクにあるパターンのほうが効果的です。 <script type="text/javascript"> <!-- function myNoMenu(){ event.cancelBubble = true event.returnValue = false; return false; } function myEventFx(myEvent){ if(myEvent.button && myEvent.button == 2){ alert("右クリックは禁止"); return false; } } function myEventIE(){ if(event.button == 2){ myNoMenu(); alert("右クリックは禁止"); return false; } } function myEventNN(myEvent){ // N4 if(myEvent.which == 3){ alert("右クリックは禁止"); return false; } } if(document.getElementById){ if(window.opera){ window.addEventListener("mousedown",myEventFx,true); } else if(window.addEventListener){ document.oncontextmenu = myEventFx; } else if(document.all){ document.oncontextmenu = myNoMenu; document.onmousedown = myEventIE ; } else if(document.layers){ document.captureEvents(Event.MOUSEDOWN); document.onmousedown = myEventNN ; } } //--> </script> (ちなみにこの事例ではアラートが嫌がられることを認識しつつもそうしないと右クリックを制御できない環境があるためあえてそうしています。)

参考URL:
http://www.mozilla.gr.jp/standards/webtips1002.html
tmi
質問者

お礼

MAN_MA_RUI様 回答ありがとうございます!!! >oncontextmenu="return false;"自体がJavaScriptです html言語だとばかり思っていました 勉強になりました JavaとJavaScript 私の頭の中 はっきりいって 渾然一体となっています・・・・ これも勉強になりました 参考URLありがとうございました!!!

その他の回答 (3)

  • hachi_08
  • ベストアンサー率58% (44/75)
回答No.3

JavaScriptでやるなら、以下の手順はどうでしょうか? ///////////////////////////////////////////////////////// 【1】ANo.2さんが記載してくれた参考URLに入って、ページ真ん中あたりの水色が背景色になっているスクリプト記述部分をコピー。 (1行目の「<script language="Javascript">」と、最終行の「</script>」はコピーしなくてもいいです) 【2】コピーした文をメモ帳などに貼り付けて、○○.jsという名前をつけて保存します。 【3】右クリックを禁止したいページの<head> ~~ </head>内に <script src="○○.js" type="text/javascript"></script> と書きます。 ///////////////////////////////////////////////////////// 右クリックを禁止したいページには全ページ書き込むことになるので <body oncontextmenu="return false;"> を埋め込むのと手間的にはそんなに変わらないかもしれませんが、若干スマート?かも…。

tmi
質問者

お礼

hachi_08様 2度も回答、アドバイスいただき ありがとうございます!!! さっそく 実行してみます ありがとうございました!!!

  • 345itati
  • ベストアンサー率48% (795/1639)
回答No.2

えーと、CSSというのは基本的に文字の色とか配置とか、デザインを受け持つものであって、CSSに右クリック禁止のような命令を受け持つ要素はありません。 強いて言えば、javascriptで書く事になると思います。これとて、javascriptを無効にしていれば何の意味も成しませんが。 参考→http://www.broadband-xp.com/hidesource/contextmenu.html

tmi
質問者

お礼

345itati様 早々の 回答ありがとうございます スタイルシート使えば 全ページ一括で右クリ禁止できると 思っていたら・・・できないのですね。。。。。 JAVAは敷居高いので各ページに<body oncontextmenu="return false;"> 埋め込んだ方が無難かなと思いました ありがとうございました。

  • hachi_08
  • ベストアンサー率58% (44/75)
回答No.1

cssで右クリック禁止をさせる記述は存在しないと思います。 JavaScriptなどではダメなのでしょうか?

tmi
質問者

補足

hachi_08様 はやばやの回答ありがとうございます 私の 浅い知識だと スタイルシート使えば 「全てのページ」に各種設定が 一律に思いのままできる・・・・と、思っていました(恥) そんなに甘くなかったのですね。。。。 JavaScriptでできるのなら、参考になるURL知っていたら お願いいたします