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

Upload: solomon-edwards

Post on 18-Jan-2018

226 views

Category:

Documents


0 download

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

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;};