diff options
author | MDN <actions@users.noreply.github.com> | 2021-04-17 00:11:36 +0000 |
---|---|---|
committer | MDN <actions@users.noreply.github.com> | 2021-04-17 00:11:36 +0000 |
commit | 0ccebc7eb352eda4d26d0b876fea36f24f482eec (patch) | |
tree | f5c0a32bc5149d8bd5aa7942577758ce7c8ed485 /files/ko/web/guide | |
parent | 40cd01daeb2f6f7fff40ff2986208513afc8678e (diff) | |
download | translated-content-0ccebc7eb352eda4d26d0b876fea36f24f482eec.tar.gz translated-content-0ccebc7eb352eda4d26d0b876fea36f24f482eec.tar.bz2 translated-content-0ccebc7eb352eda4d26d0b876fea36f24f482eec.zip |
[CRON] sync translated content
Diffstat (limited to 'files/ko/web/guide')
-rw-r--r-- | files/ko/web/guide/events/creating_and_triggering_events/index.html | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/files/ko/web/guide/events/creating_and_triggering_events/index.html b/files/ko/web/guide/events/creating_and_triggering_events/index.html deleted file mode 100644 index 2c19b74b88..0000000000 --- a/files/ko/web/guide/events/creating_and_triggering_events/index.html +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: 이벤트 생성 및 트리거 -slug: Web/Guide/Events/Creating_and_triggering_events -tags: - - DOM - - NeedsContent - - 가이드 - - 고급 - - 이벤트 - - 자바스크립트 -translation_of: Web/Guide/Events/Creating_and_triggering_events ---- -<p>이 글은 DOM 이벤트를 생성하고 디스패치하는 방법에 대해 설명합니다. 이런 이벤트는 흔히 <strong>인공 이벤트(synthetic events)</strong>라고 불리며, 브라우저 자체에서 실행되는 이벤트와 반대입니다.</p> - -<h2 id="커스텀_이벤트_생성하기">커스텀 이벤트 생성하기</h2> - -<p>다음과 같이 <a href="/en-US/docs/Web/API/Event"><code>Event</code></a> 생성자를 사용해 Events 를 생성할 수 있습니다.</p> - -<pre class="brush: js">var event = new Event('build'); - -// 이벤트 리슨. -elem.addEventListener('build', function (e) { /* ... */ }, false); - -// 이벤트 디스패치. -elem.dispatchEvent(event);</pre> - -<p>위 코드 예제는 <a href="/ko/docs/Web/API/EventTarget/dispatchEvent">EventTarget.dispatchEvent()</a> 메소드를 사용합니다.</p> - -<p>이 생성자는 대부분의 최신 브라우저(Internet Exploere 는 예외)에서 지원됩니다. 더 장황한 접근법(Internet Explorer 에서도 동작하는)은, 아래 <a href="#The_old-fashioned_way" title="#The_old-fashioned_way">옛날 방식</a> 부분을 참고하세요.</p> - -<h3 id="커스텀_데이터_추가_–_CustomEvent()">커스텀 데이터 추가 – CustomEvent()</h3> - -<p>이벤트 객체에 더 많은 데이터를 추가하려면, <a href="/en-US/docs/Web/API/CustomEvent">CustomEvent</a> 인터페이스가 존재하고 <u><strong>detail</strong></u> 프로퍼티를 통해 커스텀 데이터를 전달할 수 있습니다<br> - <span style="line-height: 1.5;">예를 들면, 다음과 같이 이벤트가 생성될 수 있습니다.</span></p> - -<pre class="brush: js">var event = new CustomEvent('build', { detail: elem.dataset.time });</pre> - -<p>그럼 이벤트 리스너의 부가적인 데이터에 접근할 수 있게 됩니다.</p> - -<pre class="brush: js">function eventHandler(e) { - console.log('The time is: ' + e.detail); -} -</pre> - -<h3 id="옛날_방식">옛날 방식</h3> - -<p>생성 이벤트로의 오래된 접근법은 Java 로부터 영감을 받은 API들을 사용합니다. 다음은 그 예시를 보여줍니다.</p> - -<pre class="brush: js">// 이벤트 생성. -var event = <a href="/en-US/docs/Web/API/Document/createEvent">document.createEvent</a>('Event'); - -// 이벤트 이름을 'build' 라 정의. -event.initEvent('build', true, true); - -// 이벤트 리슨. -elem.addEventListener('build', function (e) { - // e.target 은 elem 과 일치 -}, false); - -// target 은 어떤 엘리먼트나 다른 이벤트 타켓이 될 수 있음. -elem.dispatchEvent(event); - -</pre> - -<h3 id="이벤트_버블링">이벤트 버블링</h3> - -<p>자식 엘리먼트로부터 이벤트를 발생시키고 그 조상이 이를 캐치하도록 하는것은 종종 바람직합니다. 선택적으로 데이터도 함께합니다.</p> - -<pre class="brush: html"><form> - <textarea></textarea> -</form> -</pre> - -<pre class="brush: js">const form = document.querySelector('form'); -const textarea = document.querySelector('textarea'); - -// 새로운 이벤트를 생성하고, 버블링을 허용하며, "details" 프로퍼티로 전달할 데이터를 제공합니다 -const eventAwesome = new CustomEvent('awesome', { - bubbles: true, - detail: { text: () => textarea.value } -}); - -// form 엘리먼트는 커스텀 "awesome" 이벤트를 리슨한 후 전달된 text() 메소드의 결과를 콘솔에 출력합니다 -form.addEventListener('awesome', e => console.log(e.detail.text())); - -// 사용자가 입력한대로, form 내의 textarea 는 이벤트를 디스패치/트리거하여 시작점으로 사용합니다 -textarea.addEventListener('input', e => e.target.dispatchEvent(eventAwesome)); -</pre> - -<h3 id="이벤트를_동적으로_생성하고_디스패칭하기">이벤트를 동적으로 생성하고 디스패칭하기</h3> - -<p>엘리먼트는 아직 생성되지 않은 이벤트를 리슨할 수 있습니다.</p> - -<pre class="brush: html"><form> - <textarea></textarea> -</form> -</pre> - -<pre class="brush: js">const form = document.querySelector('form'); -const textarea = document.querySelector('textarea'); - -form.addEventListener('awesome', e => console.log(e.detail.text())); - -textarea.addEventListener('input', function() { - // 이벤트 즉시 생성 및 디스패치/트리거 - // 노트: 선택적으로, 우리는 "함수 표현"("화살표 함수 표현" 대신)을 사용하므로 "this"는 엘리먼트를 나타냅니다 - this.dispatchEvent(new CustomEvent('awesome', { bubbles: true, detail: { text: () => textarea.value } })) -}); -</pre> - -<h2 id="내장_이벤트_트리거">내장 이벤트 트리거</h2> - -<p>이 예제는 DOM 메소드를 사용해 체크박스에 클릭을 시뮬레이팅하는 것을 보여줍니다(클릭 이벤트를 프로그래밍적으로 발생시키는 것입니다). <a class="external" href="http://developer.mozilla.org/samples/domref/dispatchEvent.html">동작하는 예제를 확인하세요.</a></p> - -<pre class="brush: js">function simulateClick() { - var event = new MouseEvent('click', { - view: window, - bubbles: true, - cancelable: true - }); - var cb = document.getElementById('checkbox'); - var cancelled = !cb.dispatchEvent(event); - if (cancelled) { - // 핸들러가 preventDefault 를 호출했음. - alert("cancelled"); - } else { - // 어떤 핸들러도 preventDefault 를 호출하지 않음. - alert("not cancelled"); - } -}</pre> - -<h2 id="함께_보기">함께 보기</h2> - -<ul> - <li><a href="/ko/docs/Web/API/CustomEvent/CustomEvent">CustomEvent()</a></li> - <li>{{domxref("document.createEvent()")}}</li> - <li>{{domxref("Event.initEvent()")}}</li> - <li>{{domxref("EventTarget.dispatchEvent()")}}</li> - <li>{{domxref("EventTarget.addEventListener()")}}</li> -</ul> |