123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- define("dojo/mouse", ["./_base/kernel", "./on", "./has", "./dom", "./_base/window"], function(dojo, on, has, dom, win){
- // module:
- // dojo/mouse
- // summary:
- // This module provide mouse event handling utility functions and exports
- // mouseenter and mouseleave event emulation.
- // example:
- // To use these events, you register a mouseenter like this:
- // | define(["dojo/on", dojo/mouse"], function(on, mouse){
- // | on(targetNode, mouse.enter, function(event){
- // | dojo.addClass(targetNode, "highlighted");
- // | });
- // | on(targetNode, mouse.leave, function(event){
- // | dojo.removeClass(targetNode, "highlighted");
- // | });
- has.add("dom-quirks", win.doc && win.doc.compatMode == "BackCompat");
- has.add("events-mouseenter", win.doc && "onmouseenter" in win.doc.createElement("div"));
- var mouseButtons;
- if((has("dom-quirks") && has("ie")) || !has("dom-addeventlistener")){
- mouseButtons = {
- LEFT: 1,
- MIDDLE: 4,
- RIGHT: 2,
- // helper functions
- isButton: function(e, button){ return e.button & button; },
- isLeft: function(e){ return e.button & 1; },
- isMiddle: function(e){ return e.button & 4; },
- isRight: function(e){ return e.button & 2; }
- };
- }else{
- mouseButtons = {
- LEFT: 0,
- MIDDLE: 1,
- RIGHT: 2,
- // helper functions
- isButton: function(e, button){ return e.button == button; },
- isLeft: function(e){ return e.button == 0; },
- isMiddle: function(e){ return e.button == 1; },
- isRight: function(e){ return e.button == 2; }
- };
- }
- dojo.mouseButtons = mouseButtons;
- /*=====
- dojo.mouseButtons = {
- // LEFT: Number
- // Numeric value of the left mouse button for the platform.
- LEFT: 0,
- // MIDDLE: Number
- // Numeric value of the middle mouse button for the platform.
- MIDDLE: 1,
- // RIGHT: Number
- // Numeric value of the right mouse button for the platform.
- RIGHT: 2,
- isButton: function(e, button){
- // summary:
- // Checks an event object for a pressed button
- // e: Event
- // Event object to examine
- // button: Number
- // The button value (example: dojo.mouseButton.LEFT)
- return e.button == button; // Boolean
- },
- isLeft: function(e){
- // summary:
- // Checks an event object for the pressed left button
- // e: Event
- // Event object to examine
- return e.button == 0; // Boolean
- },
- isMiddle: function(e){
- // summary:
- // Checks an event object for the pressed middle button
- // e: Event
- // Event object to examine
- return e.button == 1; // Boolean
- },
- isRight: function(e){
- // summary:
- // Checks an event object for the pressed right button
- // e: Event
- // Event object to examine
- return e.button == 2; // Boolean
- }
- };
- =====*/
- function eventHandler(type, mustBubble){
- // emulation of mouseenter/leave with mouseover/out using descendant checking
- var handler = function(node, listener){
- return on(node, type, function(evt){
- if(!dom.isDescendant(evt.relatedTarget, mustBubble ? evt.target : node)){
- return listener.call(this, evt);
- }
- });
- };
- if(!mustBubble){
- handler.bubble = eventHandler(type, true);
- }
- return handler;
- }
- return {
- _eventHandler: eventHandler, // for dojo/touch
- // enter: Synthetic Event
- // This is an extension event for the mouseenter that IE provides, emulating the
- // behavior on other browsers.
- enter: eventHandler("mouseover"),
- // leave: Synthetic Event
- // This is an extension event for the mouseleave that IE provides, emulating the
- // behavior on other browsers.
- leave: eventHandler("mouseout"),
- isLeft: mouseButtons.isLeft,
- /*=====
- isLeft: function(){
- // summary:
- // Test an event object (from a mousedown event) to see if the left button was pressed.
- },
- =====*/
- isMiddle: mouseButtons.isMiddle,
- /*=====
- isMiddle: function(){
- // summary:
- // Test an event object (from a mousedown event) to see if the middle button was pressed.
- },
- =====*/
- isRight: mouseButtons.isRight
- /*=====
- , isRight: function(){
- // summary:
- // Test an event object (from a mousedown event) to see if the right button was pressed.
- }
- =====*/
- };
- });
|