Class: Events

Events

事件类。

new SuperMap.Events(object, element, eventTypes, fallThrough, options)

common/commontypes/Events.js, line 7
Name Type Description
object Object

当前事件对象被添加到的JS对象。

element HTMLElement

响应浏览器事件的dom元素。

eventTypes Array.<string>

自定义应用事件的数组。

fallThrough boolean

是否允许事件处理之后向上传递(冒泡),为false的时候阻止事件冒泡。

options Object

事件对象选项。

Members

constantBROWSER_EVENTSArray.<string>

支持的事件。

Default Value:
  • [ "mouseover", "mouseout","mousedown", "mouseup", "mousemove", "click", "dblclick", "rightclick", "dblrightclick","resize", "focus", "blur","touchstart", "touchmove", "touchend","keydown", "MSPointerDown", "MSPointerUp", "pointerdown", "pointerup", "MSGestureStart", "MSGestureChange", "MSGestureEnd","contextmenu" ]

clearMouseListenerObject

-

elementHTMLElement

接受浏览器事件的DOM节点。

eventHandlerfunction

绑定在元素上的事件处理器对象。

eventTypesArray.<string>

支持的事件类型列表。

extensionCountObject

-

extensionsObject

事件扩展。Keys代表事件类型,values代表事件对象。

Example
以扩展"foostart" 和 "fooend" 事件为例。展示替换css属性为foo的元素的click事件。

  SuperMap.Events.foostart = SuperMap.Class({
      initialize: function(target) {
          this.target = target;
          this.target.register("click", this, this.doStuff, {extension: true});
          // only required if extension provides more than one event type
          this.target.extensions["foostart"] = true;
          this.target.extensions["fooend"] = true;
      },
      destroy: function() {
          var target = this.target;
          target.unregister("click", this, this.doStuff);
          delete this.target;
          // only required if extension provides more than one event type
          delete target.extensions["foostart"];
          delete target.extensions["fooend"];
      },
      doStuff: function(evt) {
          var propagate = true;
          if (SuperMap.Event.element(evt).className === "foo") {
              propagate = false;
              var target = this.target;
              target.triggerEvent("foostart");
              window.setTimeout(function() {
                  target.triggerEvent("fooend");
              }, 1000);
          }
          return propagate;
      }
  });
  // only required if extension provides more than one event type
  SuperMap.Events.fooend = SuperMap.Events.foostart;

fallThroughboolean

是否允许事件处理之后向上传递(冒泡),为false的时候阻止事件冒泡。

includeXYboolean

判断是否让xy属性自动创建到浏览器上的鼠标事件,一般设置为false,如果设置为true,鼠标事件将会在事件传递过程中自动产生xy属性。 可根据事件对象的'evt.object'属性在相关的事件句柄上调用getMousePosition函数。这个选项习惯默认为false的原因在于,当创建一个 事件对象,其主要目的是管理。在一个div的相对定位的鼠标事件,将其设为true也是有意义的。这个选项也可以用来控制是否抵消缓存。如果 设为false不抵消,如果设为true,用this.clearMouseCache() 清除缓存偏移(边界元素偏移,元素在页面的位置偏移)。

Example
function named(evt) {
       this.xy = this.object.events.getMousePosition(evt);
 }

listenersObject

Hashtable of Array(function): events listener functions

objectObject

发布应用程序事件的对象。

Methods

addEventType(eventName)

common/commontypes/Events.js, line 187

在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。

Name Type Description
eventName string

事件名。

attachToElement(element)

common/commontypes/Events.js, line 199

给dom元素绑定浏览器事件。

Name Type Description
element HTMLDOMElement

绑定浏览器事件的dom元素。

clearMouseCache()

common/commontypes/Events.js, line 463

清除鼠标缓存。

destroy()

common/commontypes/Events.js, line 159

移除当前要素element上的所有事件监听和处理。

getMousePosition(evt){SuperMap.Pixel}

common/commontypes/Events.js, line 477
Name Type Description
evt Event

事件对象。

Returns:
Type Description
SuperMap.Pixel 当前的鼠标的xy坐标点。

handleBrowserEvent(evt)

common/commontypes/Events.js, line 430

对triggerEvent函数的包装,给事件对象设置了xy属性(即当前鼠标点的xy坐标)。

Name Type Description
evt Event

事件对象。

on(object)

common/commontypes/Events.js, line 235

在一个相同的范围内注册监听器的方法,此方法调用register函数。

Name Type Description
object Object

添加监听的对象。

Example
// 注册一个"loadstart"监听事件
events.on({"loadstart": loadStartListener});

// 同样注册一个"loadstart"监听事件
events.register("loadstart", undefined, loadStartListener);

// 同时为对象注册多个监听事件
events.on({
    "loadstart": loadStartListener,
    "loadend": loadEndListener,
    scope: object
});

// 同时为对象注册多个监听事件,多次调用register方法
events.register("loadstart", object, loadStartListener);
events.register("loadend", object, loadEndListener);

register(type, obj, func, priority)

common/commontypes/Events.js, line 268

在事件对象上注册一个事件。当事件被触发时,'func'函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象。

Name Type Description
type string

事件注册者的名字。

obj Object

对象绑定的回调。如果没有特定的对象,则默认是事件的object属性。

func function

回调函数,如果没有特定的回调,则这个函数不做任何事情。

priority boolean | Object

当为true时将新的监听加在事件队列的前面。

registerPriority(type, obj, func)

common/commontypes/Events.js, line 305

相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束。

Name Type Description
type string

事件注册者的名字。

obj Object

对象绑定方面的回调。如果没有特定的对象,则默认是事件的object属性。

func function

回调函数,如果没有特定的回调,则这个函数不做任何事情。

remove(type)

common/commontypes/Events.js, line 371

删除某个事件类型的所有监听,如果该事件类型没有注册,则不做任何操作。

Name Type Description
type string

事件类型。

triggerEvent(type, evt){boolean}

common/commontypes/Events.js, line 382

触发一个特定的注册事件。

Name Type Description
type string

触发事件类型。

evt Event

事件对象。

Returns:
Type Description
boolean 返回监听对象,如果返回是falee,则停止监听。

un(object)

common/commontypes/Events.js, line 317

在一个相同的范围内取消注册监听器的方法,此方法调用unregister函数。

Name Type Description
object Object

移除监听的对象。

Example
// 移除"loadstart" 事件监听
events.un({"loadstart": loadStartListener});

// 使用unregister方法移除"loadstart" 事件监听
events.unregister("loadstart", undefined, loadStartListener);

// 取消对象多个事件监听
events.un({
    "loadstart": loadStartListener,
    "loadend": loadEndListener,
    scope: object
});

// 取消对象多个事件监听,多次调用unregister方法。
events.unregister("loadstart", object, loadStartListener);
events.unregister("loadend", object, loadEndListener);

unregister(type, obj, func)

common/commontypes/Events.js, line 348

取消注册。

Name Type Description
type string

事件类型。

obj Object

默认为 this.object。

func function

事件监听。