Class: Events

SuperMap.Events

事件类。

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

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

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

element HTMLElement

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

eventTypes Array.<string>

自定义应用事件的数组。

fallThrough boolean false 可选

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

options Object

事件对象选项。

Members

(constant) BROWSER_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 Default Description
type string

事件注册者的名字。

obj Object this.object 可选

对象绑定的回调。

func function 可选

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

priority boolean | Object 可选

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

registerPriority(type, obj, func)

common/commontypes/Events.js, line 305

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

Name Type Default Description
type string

事件注册者的名字。

obj Object this.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 返回监听对象,如果返回是 false,则停止监听。

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 Default Description
type string

事件类型。

obj Object this.object 可选

对象绑定方面的回调。

func function 可选

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