Skip to content

Commit 417faf2

Browse files
authored
Merge pull request #77 from hackal/onexit-trigger-fix
Onexit trigger fix
2 parents a76509b + ba6031b commit 417faf2

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/exp.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,16 @@ class Exp {
192192
} else if (this.trigger.type === "onexit") {
193193
/* Renders banner if user wants to leave the page */
194194
const delay = this.trigger.delay || 0;
195-
window.__exp_triggered = false;
196-
document.body.addEventListener("mouseleave", function(e) {
197-
/* Check window was left */
198-
if (e.offsetY - window.scrollY < 0 && !window.__exp_triggered) {
199-
window.__exp_triggered = true;
195+
// add unique global variable in case multiple onexit banner are in site
196+
window[`__exp_triggered-${this.bannerId}`] = false;
197+
document.body.addEventListener("mouseout", (e) => {
198+
e = e ? e : window.event;
199+
const vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
200+
if (e.clientX >= (vpWidth)) return;
201+
if (e.clientY >= 50) return;
202+
const from = e.relatedTarget || e.toElement;
203+
if(!from && !window[`__exp_triggered-${this.bannerId}`]) {
204+
window[`__exp_triggered-${this.bannerId}`] = true;
200205
setTimeout(() => {
201206
self.inject(self);
202207
}, delay);

0 commit comments

Comments
 (0)