8
CS 142 Lecture Notes: Events Slide 1 Access to Event Object event variable (HTML): <div onclick="mouseClick(event);"> Passed as argument to function (DOM/Firefox): element.onclick = mouseClick; function mouseClick(evt) { ... x = evt.clientX; ... } Global variable (DOM/IE): element.onclick = mouseClick; function mouseClick() { ... x = window.event.clientX; ... }

CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

Embed Size (px)

Citation preview

Page 1: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 1

Access to Event Object

● event variable (HTML):<div onclick="mouseClick(event);">

● Passed as argument to function (DOM/Firefox):element.onclick = mouseClick;function mouseClick(evt) { ... x = evt.clientX; ...}

● Global variable (DOM/IE):element.onclick = mouseClick;function mouseClick() { ... x = window.event.clientX; ...}

Page 2: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 2

Draggable Rectangle

<style type="text/css"> #div1 { position: absolute; }</style>...<div id="div1" onmousedown="mouseDown(event);" onmousemove="mouseMove(event);" onmouseup="mouseUp(event);">Drag Me!</div>

Page 3: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 3

Dragging ApplicationisMouseDown = false;function mouseDown(event) { prevX = event.clientX; prevY = event.clientY; isMouseDown = true;}function mouseMove(event) { if (!isMouseDown) { return; } element = document.getElementById("div1"); element.style.left = (element.offsetLeft + (event.clientX - prevX)) + "px"; element.style.top = (element.offsetTop + (event.clientY - prevY)) + "px"; prevX = event.clientX; prevY = event.clientY;}function mouseUp(event) { isMouseDown = false;}

Page 4: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 4

Cleaner Implementation

<body> <div id="div1">Drag Me!</div> <div id="div2">Drag Me Too!</div> <script type="text/javascript" src="dragger.js"> <script type="text/javascript"> //<![CDATA[ new Dragger("div1"); new Dragger("div2"); //]]> </script></body>}

Page 5: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 5

Dragger.js, part 1function Dragger(id) { this.isMouseDown = false; this.element = document.getElementById(id); this.element.onmousedown = this.wrap(this, "mouseDown");}Dragger.prototype.wrap = function(obj, method) { return function(event) { obj[method](event); }}Dragger.prototype.mouseDown = function(event) { this.oldMoveHandler = document.body.onmousemove; document.onmousemove = this.wrap(this, "mouseMove"); this.oldUpHandler = document.body.onmouseup; document.onmouseup = this.wrap(this, "mouseUp"); this.prevX = event.clientX; this.prevY = event.clientY; this.isMouseDown = true;}

Page 6: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 6

Dragger.js, part 2

Dragger.prototype.mouseMove = function(event) { if (!this.isMouseDown) { return; } this.element.style.left = (this.element.offsetLeft + (event.clientX - this.prevX)) + "px"; this.element.style.top = (this.element.offsetTop + (event.clientY - this.prevY)) + "px"; this.prevX = event.clientX; this.prevY = event.clientY;}Dragger.prototype.mouseUp = function(event) { this.isMouseDown = false; document.onmousemove = this.oldMoveHandler; document.onmouseup = this.oldUpHandler;}

Page 7: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 7

Which Element Gets Event?

<body> <table> <tr> <td>xyz</td> </tr> </table></body>

Click on this

Page 8: CS 142 Lecture Notes: EventsSlide 1 Access to Event Object ● event variable (HTML): ● Passed as argument to function (DOM/Firefox): element.onclick = mouseClick;

CS 142 Lecture Notes: Events Slide 8