初心者のためのJavaScript入門

第2回 イベントで「右クリック禁止」を禁止してみよう

小島 尚基
有限会社インテレクトキューブ

2010/1/7

イベントをいろいろな場所に書いてみる

- PR -

 ここまではボタンに対してイベントを使いました。しかし、イベントは、さまざまなものに対して使うことができます。

 例えば、Webページ全体にイベントを使うこともできます。この場合、HTMLの<body>タグにJavaScriptを書きます。

 さっそくJavaScriptを書いて、サンプルをWebブラウザで動かしてみましょう。

<html>
  <body onload="alert('いらっしゃいませ。')" onunload="alert('またどうぞ。')">
  ようこそJavaScriptの世界へ<br>
  </body>
</html>

 onload(オンロード)は、HTMLが読み込まれたことをきっかけにするイベントです。onunload(オンアンロード)は、別のWebページに移動したり、Webページが閉じられたりしたことをきっかけにするイベントです。

●HTMLが読み込まれたとき
サンプル9
●別ページに移動したときやWebブラウザを閉じたとき
サンプル10

 onloadは、海外のWebサイトなどではポップアップ広告を出すのに使われていますが、本来はWebページが完全に読み込まれてから、JavaScriptを動かしたいときなどに使うのが正しい使用方法です。

 便利なJavaScriptも使用方法によっては、ユーザーの反感を買うことになるので、注意しましょう。

 また、最近は減りましたが、次のようなJavaScriptを使ったWebページを見かけることがあります。

<html>
  <body oncontextmenu="alert('右クリック禁止!'); return false">
  このページは右クリック禁止です。<br>
  </body>
</html>
サンプル11

 Windowsの右クリックで出るメニューのことをコンテキストメニューといいます。oncontextmenu(オンコンテキストメニュー)は、右クリックで出てくるメニューを表示したことをきっかけにするイベントです。

【注意】

oncontextmenuは、WindowsのInternet Explorer、Firefox、Google Chromeでは有効ですが、Operaはoncontextmenuのイベントをサポートしていません。

このように、Webブラウザの種類やバージョンによってサポートしてるJavaScriptに若干の違いがあります。

Webブラウザによる違いは、JavaScriptを扱ううえで避けてとおれない問題なので、機会があれば解説したいと思います。しかし、この連載では当面、Internet Explorer 8を使用して解説をしていきます。

 oncontextmenu=の中身を少し詳しく見てみましょう。alertで警告ダイアログを出した後に、;およびreturn falseと書かれています。

 ;(セミコロン)はJavaScriptの区切りです。複数のJavaScriptを書くときに、JavaScriptの終わりを;で区切ります。JavaScriptが1つしかない場合や、JavaScriptの最後には書かなくてもかまいません。

 次のreturn falseを簡単に説明すると、起きたイベントをなかったことにしたいというときに使います。この場合、本来は「右クリックされたらコンテキストメニューを表示する」ところを、警告ダイアログを表示して、本来の「右クリックの動作をなかったこと」にしています。

 このほかにもreturn falseの使い方として、<a>タグに対して、

<a href="http://www.google.com/" onclick="return false">リンクできない</a>

とすると、本来はリンクをクリックするとURLに移動するのに、リンクがクリックされたことを「なかったこと」にしてしまい、ページ遷移しないようにできます。

 このreturn falseも、一見使い道がないように思いますが、覚えておくと大変役に立ちます。

右クリック禁止を禁止してみる

 ところで、この右クリック禁止がうっとうしいという人多いですよね。そこで、JavaScriptを使って「右クリック禁止を禁止」してみましょう。

 まずは、先ほどの右クリック禁止のサンプルを実行して、右クリックが禁止になっているのを確認ください。

 さて、どのようにしたら、表示されているWebページのJavaScriptを上書きして、右クリック禁止を禁止できるでしょうか。

 皆さんは、第1回の冒頭で紹介したブックマークレットを覚えているでしょうか。ブックマークレットは、Webブラウザのアドレスバーに直接JavaScriptを書き込んで実行するものです。

 そう、ブックマークレットを使えば、表示されているWebページのJavaScriptを上書きできるのです! 以下のスクリプトを1行でコピーして、Webブラウザのアドレスバーに張り付けてみてください。

javascript:alert('右クリック禁止を禁止!'); document.body.oncontextmenu=''; document.oncontextmenu=''; document.onmousedown=''; void(0)

 右クリック禁止が禁止されて、コンテキストメニューが表示されるようになりましたか。このブックマークレットを使えば、多くの「右クリック禁止サイト」の右クリック禁止を禁止にできると思います。

 サンプル以外でも、Webページで右クリック禁止を見つけたらこのブックマークレットを試してみてください。

next
3/4
next

Index
イベントで「右クリック禁止」を禁止してみよう
  Page1
ボタンを押すと何かが起きる?
サンプルを理解してみよう
  Page2
いろいろなイベントを使ってみる
  Page3
イベントをいろいろな場所に書いてみる
右クリック禁止を禁止してみる
  Page4
ブックマークレットを理解しよう
コピー&ペーストを禁止してみる

index 初心者のためのJavaScript入門

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91

TechTargetジャパン

Coding Edge フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH