LoginSignup
0
1

More than 3 years have passed since last update.

年末まで毎日webサイトを作り続ける大学生 〜44日目 イベント(oncontextmenu, onresize, onerror, onmouseover/onmouseout)を使ってみる〜

Posted at

はじめに

こんにちは!@70days_jsです。
もう12月ですね。

今日はJavaScriptのイベントを使ってみました。

  1. oncontextmenu
  2. onresize
  3. onerror
  4. onmouseover/onmouseout

今日は44日目。(2019/12/1)
よろしくお願いします。

サイトURL

やったこと

今日使ったイベントは主に4つです。

  1. oncontextmenu(赤・青色)
  2. onresize(黄色)
  3. onerror(緑色)
  4. onmouseover/onmouseout(すべて)

test2.gif

1. oncontextmenuの部分

oncontextmenuは右クリック時のイベントです。

赤色のボックスでは右クリックを禁止して(falseにする)、赤色の枠の中に文字列を表示するようにしています。

青色のボックスでは右クリックされるとalertが表示されます。

<div id="contextMenu" class="context-menu onmouseover">右クリックをすると・・・?</div>
<div id="contextMenu2" class="context-menu2 onmouseover">右クリックをすると・・・?</div>
let contextMenu = document.getElementById('contextMenu');
let contextMenu2 = document.getElementById('contextMenu2');
contextMenu.oncontextmenu = function () {
    contextMenu.innerHTML = '右クリック不可エリア(不可ではない)';
    return false;
}
contextMenu2.oncontextmenu = function () {
    contextMenu2.innerHTML = ('alertの表示!');
    alert('右クリックをしたな?');
}

これで右クリックを使えなくすることもできますが、JavaScript自体を禁止されたり、ディベロッパーツールでコードを書き換えられたりしたら右クリックができるようになります。

2. onresize

onresizeは画面サイズの変更時のイベントです。

今回は画面サイズが変更されたら横幅の値を表示するようにしています。

<div id="resize" class="resize onmouseover">Displayサイズは・・・? <br></div>
let resize = document.getElementById('resize');
window.onresize = function () {
    resize.innerHTML += window.innerWidth + ',';
}

window.innerWidthで横幅を取っています。

3. onerror

onerrorは画像読み込み失敗時のイベントです。

gifでは猫の画像を表示していますが、htmlのソースコードには存在しないURLを書いています。

<div id="onerror" class="onerror onmouseover">
    画像が表示されない場合は・・・?<br>
    <img src="day44.png" id="onerrorImage">
</div>
let onerror = document.getElementById('onerror');
let onerrorImage = document.getElementById('onerrorImage');
onerrorImage.onerror = function () {
    onerrorImage.removeAttribute("src");
    onerrorImage.setAttribute('src', 'day31_image/5.jpg');
}

setAttributeで画像が存在するURLを書いています。

4. onmouseover/onmouseout

onmouseoverはマウスが乗った時のイベントです。
onmouseoutはマウスが離れた時のイベントです。

今回は、ボックスにマウスが乗ったらborder-widthを太くして目立つようにしました。
要素の取得はクラスで行いました。


let onmouseover = document.getElementsByClassName('onmouseover');
for (var i = 0; onmouseover.length > i; i++) {
    onmouseover[i].onmouseover = function (e) {
        e.target.style.borderWidth = '.5em';
    }
    onmouseover[i].onmouseout = function (e) {
        e.target.style.borderWidth = '1px';
        console.log('test');
    }
}

ボックスにクラスをつけておき、getElementsByClassNameでクラスを取得します。
for文で回して、e.targetでそれぞれのborder-widthの大きさを変更しています。

メモ

  • 2つのオブジェクト
    • ビルトインオブジェクト・・・jsに組み込まれた機能をオブジェクト化(ECMAScript仕様に基づく)、配列、文字列、正規表現など
    • ナビゲーターオブジェクト・・・ブラウザ自体の情報、表示に関わる機能をオブジェクト化(ブラウザ独自の実装がされている)

感想

イベントを調べていると、どうもweb業界の闇が見えるなぁと思っていたんですが、イベントはナビゲーターオブジェクトだからブラウザごとにメソッド名・プロパティ名が違って当たり前なんですね。
標準化して欲しいところではありますが、こればかりは時間がかかりそうな気がする・・・。イベント便利なんだけどな。

最後までお読みいただきありがとうございます。明日も投稿しますのでよろしくお願い致します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1