Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 7x 7x 7x 199x 7x 7x 199x 199x 199x 3x 3x 3x 3x 199x 199x 199x 199x 199x 199x | const eventsData = {};
let token = 0;
const getDataName = function (name, type) {
return `${name}_${type}`;
};
const off = function (name, element, type, token) {
const eventDataName = getDataName(name, type);
const eventData = eventsData[eventDataName];
delete eventData.data[token];
if (!Object.keys(eventData).length) {
delete eventsData[eventDataName];
element.removeEventListener(type, eventData.listener, eventData.options);
}
};
const initEvent = function (name, element, type, listener, options) {
const eventDataName = getDataName(name, type);
let eventData = eventsData[eventDataName];
if (!eventData) {
const listenerBack = listener;
listener = function (e) {
listenerBack(e, eventsData[eventDataName].data);
};
eventData = eventsData[eventDataName] = {
listener,
options,
data: {},
};
element.addEventListener(type, listener, options);
}
return eventDataName;
};
/**
* 避免多次绑定同一事件,方便添加 data
*/
export default {
on(name, data, element, type, listener, options) {
const eventDataName = initEvent(name, element, type, listener, options);
token++;
eventsData[eventDataName].data[token] = data;
const i = token;
return () => off(name, element, type, i);
},
off,
getToken() {
return token;
},
};
|