| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| <script> |
| window.jsTestIsAsync = true; |
| |
| document.addEventListener('DOMContentLoaded', function () { |
| listenForEvents(document.querySelector('#outer')); |
| listenForEvents(document.querySelector('#inner1')); |
| listenForEvents(document.querySelector('#inner2')); |
| listenForEvents(document.querySelector('#inner3')); |
| |
| if (window.testRunner) { |
| eventSender.mouseMoveTo(1, 1); |
| eventSender.mouseMoveTo(90,140); |
| debug("// Entering #outer"); |
| eventSender.mouseMoveTo(110,140); |
| debug("// Entering #inner1"); |
| eventSender.mouseMoveTo(130,140); |
| debug("// Entering #inner3 (and therefore also #inner2)"); |
| eventSender.mouseMoveTo(170,140); |
| debug("// Leaving #inner3 and #inner2, but not #outer"); |
| eventSender.mouseMoveTo(180,140); |
| debug("// Leaving #outer"); |
| eventSender.mouseMoveTo(210,140); |
| } |
| |
| finishJSTest(); |
| }); |
| |
| function handleEvent(e) { |
| var phases = ['', 'capturing', 'at target', 'bubbling']; |
| var target = e.target ? e.target : e.srcElement; |
| if (target.id && target.id != "console") { |
| debug(e.type + " (" + phases[e.eventPhase] + ") on " + target.id); |
| if (e.relatedTarget && e.relatedTarget.id) |
| debug('- Related target: ' + e.relatedTarget.id); |
| } |
| |
| } |
| |
| function listenForEvents(el) { |
| ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'].forEach(function(type) { |
| el.addEventListener(type, handleEvent); |
| }); |
| } |
| </script> |
| |
| <style> |
| #outer { |
| background: blue; |
| height: 100px; |
| left: 100px; |
| position: absolute; |
| top: 100px; |
| width: 100px; |
| } |
| |
| #inner1 { |
| background: red; |
| height: 50px; |
| left: 20px; |
| position: absolute; |
| top: 20px; |
| width: 50px; |
| } |
| |
| #inner2 { |
| background: yellow; |
| height: 20px; |
| left: 60px; |
| position: absolute; |
| top: 30px; |
| width: 20px; |
| } |
| |
| #inner3 { |
| background-color: green; |
| height: 10px; |
| margin: 5px; |
| width: 10px; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="outer"> |
| <div id="inner1"></div> |
| <div id="inner2"> |
| <div id="inner3"></div> |
| </div> |
| </div> |
| </body> |
| </html> |