言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. イベントオブジェクト.preventDefault() / stopPropagation()

イベントオブジェクト.preventDefault() / stopPropagation() 対応: DOM Level 2(2000)

イベントのデフォルト動作をキャンセルする『event.preventDefault()』と、イベントの伝播を停止する『event.stopPropagation()』のメソッドです。

構文

element.addEventListener("イベント名", function(e) {
	// デフォルト動作をキャンセルします。
	e.preventDefault();

	// イベントの伝播を停止します。
	e.stopPropagation();
});

メソッド一覧

メソッド概要
event.preventDefault()ブラウザのデフォルト動作をキャンセルします。リンクのページ遷移やフォームの送信などを抑止できます。イベントの伝播は継続します。
event.stopPropagation()イベントのバブリング(親要素への伝播)を停止します。デフォルト動作はキャンセルされません。

サンプルコード

<a id="link" href="https://example.com">リンク</a>
<form id="form">
	<input type="text" id="name" placeholder="名前">
	<button type="submit">送信</button>
</form>
<div id="outer">
	<div id="inner">内側</div>
</div>
<p id="output"></p>
var output = document.querySelector("#output");

// preventDefault() でリンクのページ遷移をキャンセルします。
var link = document.querySelector("#link");
link.addEventListener("click", function(e) {
	e.preventDefault();
	output.textContent = "ページ遷移がキャンセルされました";
});

// preventDefault() でフォームの送信をキャンセルし、JavaScriptで処理します。
var form = document.querySelector("#form");
form.addEventListener("submit", function(e) {
	e.preventDefault();
	var name = document.querySelector("#name").value;
	output.textContent = "入力された名前: " + name;
});

// stopPropagation() で親要素への伝播を停止します。
var outer = document.querySelector("#outer");
var inner = document.querySelector("#inner");
outer.addEventListener("click", function() {
	output.textContent = "outer がクリックされました";
});
inner.addEventListener("click", function(e) {
	e.stopPropagation(); // 親要素への伝播を停止します。
	output.textContent = "inner がクリックされました";
});

概要

『event.preventDefault()』はブラウザが持つデフォルトの動作を抑止するメソッドです。例えば、リンクをクリックした時のページ遷移、フォームの送信ボタンを押した時のページリロード、チェックボックスをクリックした時の状態変化など、ブラウザが自動的に行う動作をキャンセルできます。フォームのバリデーションをJavaScriptで行い、問題がなければ手動で送信するという使い方が一般的です。

『event.stopPropagation()』はイベントのバブリングを停止するメソッドです。通常、子要素で発生したイベントは親要素へと順番に伝播しますが、『event.stopPropagation()』を呼ぶとその時点で伝播が停止し、親要素のリスナーは実行されません。

『event.preventDefault()』はデフォルト動作のキャンセルのみで伝播は止めず、『event.stopPropagation()』は伝播の停止のみでデフォルト動作はキャンセルしません。両方を同時に行いたい場合は、2つのメソッドを併用してください。

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
全バージョンで対応しています
Safari Safari
18 以降
全バージョンで対応しています
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
8 以前 ×
Opera Opera
48 以降
6 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。