h21-map-event-wrapper-baidu
Advanced tools
Comparing version 1.0.4 to 1.0.5
302
index.js
@@ -1,178 +0,124 @@ | ||
1 /** | ||
2 * @fileoverview 百度地图API事件包装器 | ||
3 * 此代码可使用closure compiler的advanced模式进行压缩 | ||
4 * @author Baidu Map Api Group | ||
5 * @version 1.2 | ||
6 */ | ||
7 /** | ||
8 * @namespace BMap的所有library类均放在BMapLib命名空间下 | ||
9 */ | ||
10 var BMapLib = window.BMapLib || {}; | ||
11 /** | ||
12 * 事件封装器的静态类,不可实例化 | ||
13 * @class EventWrapper | ||
14 */ | ||
15 BMapLib.EventWrapper = window.BMapLib.EventWrapper || {}; | ||
16 (function(){ | ||
17 | ||
18 //var EventWrapper = window.BMapLib.EventWrapper; | ||
19 /** | ||
20 * 添加DOM事件监听函数 | ||
21 * @param {HTMLElement} element DOM元素 | ||
22 * @param {String} event 事件名称 | ||
23 * @param {Function} handler 事件处理函数 | ||
24 * @returns {MapsEventListener} 事件监听对象 | ||
25 */ | ||
26 BMapLib.EventWrapper.addDomListener = function(instance, eventName, handler) { | ||
27 if (instance.addEventListener) { | ||
28 instance.addEventListener(eventName, handler, false); | ||
29 } | ||
30 else if (instance.attachEvent) { | ||
31 instance.attachEvent('on' + eventName, handler); | ||
32 } | ||
33 else { | ||
34 instance['on' + eventName] = handler; | ||
35 } | ||
36 return new MapsEventListener(instance, eventName, handler, MapsEventListener.DOM_EVENT); | ||
37 }; | ||
38 /** | ||
39 * 添加DOM事件监听函数,函数仅执行一次 | ||
40 * @param {HTMLElement} element DOM元素 | ||
41 * @param {String} event 事件名称 | ||
42 * @param {Function} handler 事件处理函数 | ||
43 * @returns {MapsEventListener} 事件监听对象 | ||
44 */ | ||
45 BMapLib.EventWrapper.addDomListenerOnce = function(instance, eventName, handler) { | ||
46 var eventListener = EventWrapper['addDomListener'](instance, eventName, function(){ | ||
47 // 移除 | ||
48 EventWrapper['removeListener'](eventListener); | ||
49 return handler.apply(this, arguments); | ||
50 }); | ||
51 return eventListener; | ||
52 }; | ||
53 /** | ||
54 * 添加地图事件监听函数 | ||
55 * @param {Object} instance 实例 | ||
56 * @param {String} event 事件名称 | ||
57 * @param {Function} handler 事件处理函数 | ||
58 * @returns {MapsEventListener} 事件监听对象 | ||
59 */ | ||
60 BMapLib.EventWrapper.addListener = function(instance, eventName, handler) { | ||
61 instance.addEventListener(eventName, handler); | ||
62 return new MapsEventListener(instance, eventName, handler, MapsEventListener.MAP_EVENT); | ||
63 }; | ||
64 /** | ||
65 * 添加地图事件监听函数,函数仅执行一次 | ||
66 * @param {Object} instance 需要监听的实例 | ||
67 * @param {String} event 事件名称 | ||
68 * @param {Function} handler 事件处理函数 | ||
69 * @returns {MapsEventListener} 事件监听对象 | ||
70 */ | ||
71 BMapLib.EventWrapper.addListenerOnce = function(instance, eventName, handler){ | ||
72 var eventListener = EventWrapper['addListener'](instance, eventName, function(){ | ||
73 // 移除 | ||
74 EventWrapper['removeListener'](eventListener); | ||
75 return handler.apply(this, arguments); | ||
76 }); | ||
77 return eventListener; | ||
78 }; | ||
79 /** | ||
80 * 移除特定实例的所有事件的所有监听函数 | ||
81 * @param {Object} instance 需要移除所有事件监听的实例 | ||
82 * @returns {None} | ||
83 */ | ||
84 BMapLib.EventWrapper.clearInstanceListeners = function(instance) { | ||
85 var listeners = instance._e_ || {}; | ||
86 for (var i in listeners) { | ||
87 EventWrapper['removeListener'](listeners[i]); | ||
88 } | ||
89 instance._e_ = {}; | ||
90 }; | ||
91 /** | ||
92 * 移除特定实例特定事件的所有监听函数 | ||
93 * @param {Object} instance 需要移除特定事件监听的实例 | ||
94 * @param {String} event 需要移除的事件名 | ||
95 * @returns {None} | ||
96 */ | ||
97 BMapLib.EventWrapper.clearListeners = function(instance, eventName) { | ||
98 var listeners = instance._e_ || {}; | ||
99 for (var i in listeners) { | ||
100 if (listeners[i]._eventName == eventName) { | ||
101 EventWrapper['removeListener'](listeners[i]); | ||
102 } | ||
103 } | ||
104 }; | ||
105 /** | ||
106 * 移除特定的事件监听函数 | ||
107 * @param {MapsEventListener} listener 需要移除的事件监听对象 | ||
108 * @returns {None} | ||
109 */ | ||
110 BMapLib.EventWrapper.removeListener = function(listener) { | ||
111 var instance = listener._instance; | ||
112 var eventName = listener._eventName; | ||
113 var handler = listener._handler; | ||
114 var listeners = instance._e_ || {}; | ||
115 for (var i in listeners) { | ||
116 if (listeners[i]._guid == listener._guid) { | ||
117 if (listener._eventType == MapsEventListener.DOM_EVENT) { | ||
118 // DOM事件 | ||
119 if (instance.removeEventListener) { | ||
120 instance.removeEventListener(eventName, handler, false); | ||
121 } | ||
122 else if (instance.detachEvent) { | ||
123 instance.detachEvent('on' + eventName, handler); | ||
124 } | ||
125 else { | ||
126 instance['on' + eventName] = null; | ||
127 } | ||
128 } | ||
129 else if (listener._eventType == MapsEventListener.MAP_EVENT) { | ||
130 // 地图事件 | ||
131 instance.removeEventListener(eventName, handler); | ||
132 } | ||
133 delete listeners[i]; | ||
134 } | ||
135 } | ||
136 }; | ||
137 /** | ||
138 * 触发特定事件 | ||
139 * @param {Object} instance 触发事件的实例对象 | ||
140 * @param {String} event 触发事件的名称 | ||
141 * @param {Object} args 自定义事件参数,可选 | ||
142 * @returns {None} | ||
143 */ | ||
144 BMapLib.EventWrapper.trigger = function(instance, eventName) { | ||
145 var listeners = instance._e_ || {}; | ||
146 for (var i in listeners) { | ||
147 if (listeners[i]._eventName == eventName) { | ||
148 var args = Array.prototype.slice.call(arguments, 2); | ||
149 listeners[i]._handler.apply(instance, args); | ||
150 } | ||
151 } | ||
152 }; | ||
153 | ||
154 /** | ||
155 * 事件监听类 | ||
156 * @constructor | ||
157 * @ignore | ||
158 * @private | ||
159 * @param {Object} 对象实例 | ||
160 * @param {string} 事件名称 | ||
161 * @param {Function} 事件监听函数 | ||
162 * @param {EventTypes} 事件类型 | ||
163 */ | ||
164 function MapsEventListener(instance, eventName, handler, eventType){ | ||
165 this._instance = instance; | ||
166 this._eventName = eventName; | ||
167 this._handler = handler; | ||
168 this._eventType = eventType; | ||
169 this._guid = MapsEventListener._guid ++; | ||
170 this._instance._e_ = this._instance._e_ || {}; | ||
171 this._instance._e_[this._guid] = this; | ||
172 } | ||
173 MapsEventListener._guid = 1; | ||
174 | ||
175 MapsEventListener.DOM_EVENT = 1; | ||
176 MapsEventListener.MAP_EVENT = 2; | ||
177 | ||
178 })(); | ||
/** | ||
* | ||
* @author Baidu Map Api Group | ||
* @version 1.2 | ||
*/ | ||
(function (root, factory) { | ||
if (typeof exports === 'object') { | ||
module.exports = { default: factory(), EventListener: factory() } | ||
} else if (typeof define === 'function' && define.amd) { | ||
define(factory); | ||
} else { | ||
root.BMapLib = root.BMapLib || {}; | ||
root.BMapLib.EventWrapper = root.BMapLib.EventWrapper || factory(); | ||
} | ||
})(this, function () { | ||
window['BMapLib'] = window['BMapLib'] || {}; | ||
window['BMapLib']['EventWrapper'] = window['BMapLib']['EventWrapper'] || {}; | ||
var EventWrapper = window['BMapLib']['EventWrapper']; | ||
EventWrapper['addDomListener'] = function (instance, eventName, handler) { | ||
if (instance.addEventListener) { | ||
instance.addEventListener(eventName, handler, false); | ||
} | ||
else if (instance.attachEvent) { | ||
instance.attachEvent('on' + eventName, handler); | ||
} | ||
else { | ||
instance['on' + eventName] = handler; | ||
} | ||
return new MapsEventListener(instance, eventName, handler, MapsEventListener.DOM_EVENT); | ||
}; | ||
EventWrapper['addDomListenerOnce'] = function (instance, eventName, handler) { | ||
var eventListener = EventWrapper['addDomListener'](instance, eventName, function () { | ||
EventWrapper['removeListener'](eventListener); | ||
return handler.apply(this, arguments); | ||
}); | ||
return eventListener; | ||
}; | ||
EventWrapper['addListener'] = function (instance, eventName, handler) { | ||
instance.addEventListener(eventName, handler); | ||
return new MapsEventListener(instance, eventName, handler, MapsEventListener.MAP_EVENT); | ||
}; | ||
EventWrapper['addListenerOnce'] = function (instance, eventName, handler) { | ||
var eventListener = EventWrapper['addListener'](instance, eventName, function () { | ||
EventWrapper['removeListener'](eventListener); | ||
return handler.apply(this, arguments); | ||
}); | ||
return eventListener; | ||
}; | ||
EventWrapper['clearInstanceListeners'] = function (instance) { | ||
var listeners = instance._e_ || {}; | ||
for (var i in listeners) { | ||
EventWrapper['removeListener'](listeners[i]); | ||
} | ||
instance._e_ = {}; | ||
}; | ||
EventWrapper['clearListeners'] = function (instance, eventName) { | ||
var listeners = instance._e_ || {}; | ||
for (var i in listeners) { | ||
if (listeners[i]._eventName == eventName) { | ||
EventWrapper['removeListener'](listeners[i]); | ||
} | ||
} | ||
}; | ||
EventWrapper['removeListener'] = function (listener) { | ||
var instance = listener._instance; | ||
var eventName = listener._eventName; | ||
var handler = listener._handler; | ||
var listeners = instance._e_ || {}; | ||
for (var i in listeners) { | ||
if (listeners[i]._guid == listener._guid) { | ||
if (listener._eventType == MapsEventListener.DOM_EVENT) { | ||
if (instance.removeEventListener) { | ||
instance.removeEventListener(eventName, handler, false); | ||
} | ||
else if (instance.detachEvent) { | ||
instance.detachEvent('on' + eventName, handler); | ||
} | ||
else { | ||
instance['on' + eventName] = null; | ||
} | ||
} | ||
else if (listener._eventType == MapsEventListener.MAP_EVENT) { | ||
instance.removeEventListener(eventName, handler); | ||
} | ||
delete listeners[i]; | ||
} | ||
} | ||
}; | ||
EventWrapper['trigger'] = function (instance, eventName) { | ||
var listeners = instance._e_ || {}; | ||
for (var i in listeners) { | ||
if (listeners[i]._eventName == eventName) { | ||
var args = Array.prototype.slice.call(arguments, 2); | ||
listeners[i]._handler.apply(instance, args); | ||
} | ||
} | ||
}; | ||
function MapsEventListener(instance, eventName, handler, eventType) { | ||
this._instance = instance; | ||
this._eventName = eventName; | ||
this._handler = handler; | ||
this._eventType = eventType; | ||
this._guid = MapsEventListener._guid++; | ||
this._instance._e_ = this._instance._e_ || {}; | ||
this._instance._e_[this._guid] = this; | ||
} | ||
MapsEventListener._guid = 1; | ||
MapsEventListener.DOM_EVENT = 1; | ||
MapsEventListener.MAP_EVENT = 2; | ||
return EventWrapper; | ||
}); |
{ | ||
"name": "h21-map-event-wrapper-baidu", | ||
"version": "1.0.4", | ||
"description": "", | ||
"version": "1.0.5", | ||
"description": "A library of Baidu Map JS API", | ||
"main": "index.js", | ||
@@ -9,4 +9,15 @@ "scripts": { | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/novakand/h21-map-event-wrapper-baidu" | ||
}, | ||
"keywords": [ | ||
"baidu", | ||
"baidu-map", | ||
"angular", | ||
"event-wrapper" | ||
], | ||
"author": "", | ||
"license": "" | ||
"license": "", | ||
"homepage": "" | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
3
1
11
0
5208
111