new SuperMap.Events(object, element, eventTypes, fallThrough, options)
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 可选 回调函数,如果没有特定的回调,则这个函数不做任何事情。