new SuperMap.Events(object, element, eventTypes, fallThrough, options)
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 事件监听。