-
Notifications
You must be signed in to change notification settings - Fork 1
/
mutation-records-for-events.js
36 lines (31 loc) · 1.11 KB
/
mutation-records-for-events.js
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
function decorateEventWithMutationRecords(element, eventName) {
function createMutationObserver(observer) {
var observer;
if (window.MutationObserver)
observer = new MutationObserver(observer);
else if (window.WebKitMutationObserver)
observer = new WebKitMutationObserver(observer);
else if (window.MozMutationObserver)
observer = new MozMutationObserver(observer);
return observer && observer.takeRecords ? observer : null;
}
var mutationRecords = [];
var mutationObserver = createMutationObserver(function (records) {
mutationRecords.concat(records);
});
if (!mutationObserver)
return false;
mutationObserver.observe(element, {
childList: true,
attributes: true,
characterData: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
element.addEventListener(eventName, function (event) {
event.mutationRecords = mutationRecords.concat(mutationObserver.takeRecords());
mutationRecords = [];
});
return true;
}