-
Notifications
You must be signed in to change notification settings - Fork 0
/
adaptdetect.js
71 lines (49 loc) · 1.71 KB
/
adaptdetect.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import uuid4 from 'uuid4';
import moment from 'moment';
(function () {
$(window).on('load', function() {
let adaptEmbeds = document.querySelectorAll('.adapt-embed');
let uuid = uuid4();
// define an observer instance
let observer = new IntersectionObserver(onIntersection, {
root: null, // default is the viewport
threshold: 1 // percentage of target's visible area. Triggers "onIntersection"
});
// callback is called on intersection change
function onIntersection(entries, opts){
entries.forEach(function(entry) {
let message = {
adaptId: entry.target.id,
reviewSessionId: uuid,
start: '',
end: ''
};
let startMoment;
let endMoment;
if (entry.isIntersecting) {
entry.target.classList.toggle('is-viewed', entry.isIntersecting);
// message.adaptId = entry.target.id;
// message.reviewSessionId = uuid;
startMoment = moment();
message.start = startMoment;
//console.log(message);
}
if ( (!entry.isIntersecting) && (entry.intersectionRect.x != 0) ) {
entry.target.classList.toggle('is-viewed', entry.isIntersecting);
//message.end = moment();
endMoment = moment();
//console.log(message);
message.end = endMoment;
console.log(message);
entry.target.contentWindow.postMessage(message, "*");
}
//console.log(message);
});
// console.log(message);
}
// Use the observer to observe an element
adaptEmbeds.forEach(function(embed){
observer.observe(embed);
});
});
})();