Modern JavaScript Develop And Design Instructors Notes Chapter 8 Event Handling Modern JavaScript...

25
Modern JavaScript Develop And Design Instructor’s Notes Chapter 8 – Event Handling Modern JavaScript Design And Devel Copyright © 2012 by Larry Ullm

description

More Objectives Define a function to reliably create event handlers for all browsers Identify the most common events and event types Reference the event itself in JavaScript code Access useful event properties

Transcript of Modern JavaScript Develop And Design Instructors Notes Chapter 8 Event Handling Modern JavaScript...

Page 1: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Modern JavaScriptDevelop And Design

Instructor’s NotesChapter 8 – Event Handling

Modern JavaScript Design And DevelopCopyright © 2012 by Larry Ullman

Page 2: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Objectives• Create event handlers using the

traditional approach• Create event handlers using the W3C

approach• Create event handlers for older

versions of IE• Recognize bad, outdated ways of

creating event handlers

Page 3: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

More Objectives• Define a function to reliably create

event handlers for all browsers• Identify the most common events

and event types• Reference the event itself in

JavaScript code• Access useful event properties

Page 4: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

More Objectives• Know what key was touched or

character was typed• Prevent the default browser

behavior for an event• Comprehend event phases• Delegate event handling

Page 5: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

The Premise

window.onload = init;document.getElementById('theForm').onsubmit = process;

Page 6: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Creating Event Handlers• inline• traditional• W3C (DOM Level 2)• IE

Page 7: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Inline Event Listeners

<form action="#" method="post" onsubmit="validateForm();"><a href="somepage.html" onclick="doSomething();">Some Link</a>

Page 8: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Traditional Event Handlers

window.onload = init;window.onload = function() { // Do whatever.}

if (typeof window.onload == 'function') { // Exists!

window.onload = null;

Page 9: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

W3C Event Handling

window.addEventListener('load', process, false);window.addEventListener('load', calculate, false);

object.addEventListener('event', functionName, false);

window.removeEventListener('load', process, false);

Page 10: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

IE Event Handling

window.attachEvent('onload', process);

object.attachEvent('onevent', functionName);

window.detachEvent('onload', process);

Page 11: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Reliable Event Handling

function addEvent(obj, type, fn) { if (obj && obj.addEventListener) { // W3C obj.addEventListener(type, fn, false); } else if (obj && obj.attachEvent) { // Older IE obj.attachEvent('on' + type, fn); }}

addEvent(window, 'load', init);var theForm = document.getElementById('theForm');addEvent(theForm, 'submit', process);

Page 12: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Event Types• Input Device• Keyboard• Browser• Form• Touch

Page 13: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Input Device Buttons• click• mousedown• mouseup• dblclick• contextmenu

Page 14: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Input Device Movements• mouseout• mouseover• mousemove

Page 15: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Keyboard Events• keydown• keyup• keypress

Page 16: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Counting Charactersfunction limitText() { var comments = document.getElementById('comments'); var count = comments.value.length; document.getElementById('count').value = count; if (count > 100) { comments.value = comments.value.slice(0,100); } } // End of limitText() function.window.onload = function() { addEvent(document.getElementById('comments')('comments'), 'keyup', limitText);};

Page 17: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Browser Events• load• unload• resize• scroll• copy• cut• paste

Page 18: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Form Events• focus• blur• reset• change• select

Page 19: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Event AccessibilityKeyboard• focus• blur

Input Device• mouseover• mouseout

<a href="somepage.html" id="link">Some Text</a>// JavaScript:addEvent(document.getElementById('link'), 'mouseover', doSomething);addEvent(document.getElementById('link'), 'focus', doSomething);

Page 20: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Referencing the Event

function someEventHandler(e) { if (typeof e == 'undefined') e = window.event; // Use e.}

Page 21: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Event Properties• target/srcElement• type

function reportEvent(e) { if (typeof e == 'undefined') e = window.event; var target = e.target || e.srcElement; var msg = target.nodeName + ': ' + e.type + '\n'; document.getElementById('output').value += msg;} // End of reportEvent() function.

Page 22: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Key Pressvar charCode = (typeof e.which == 'number') ? e.which : e.keyCode;String.fromCharCode(charCode);

Page 23: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Prevent Default Behavior

if (typeof e == 'undefined') e = window.event;if (e.preventDefault) { e.preventDafault();} else { e.returnValue = false;}return false;

Page 24: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Event Phases

<div><h1>This is a Title</h1> <p>This is a paragraph. <a href="#" id="link">This is a link.</a></p></div>

Page 25: Modern JavaScript Develop And Design Instructors Notes Chapter 8  Event Handling Modern JavaScript Design And Develop Copyright  2012 by Larry Ullman.

Delegating Event Handling

window.onload = function() { var theForm = document.getElementById('theForm'); theForm.onchange = validateForm;};