Skip to content

Commit 8bf5d27

Browse files
committed
fix auto events callback href
1 parent aa513da commit 8bf5d27

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

dist/latest/auto-events.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/auto-events.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,11 @@
7878
if (!element) return log("no element found");
7979
var sent = false;
8080

81+
var href = element.getAttribute("href");
82+
8183
var callback = function () {
82-
if (!sent && !element.hasAttribute("target"))
83-
document.location = element.getAttribute("href");
84+
if (!sent && !element.hasAttribute("target") && href)
85+
document.location = href;
8486
sent = true;
8587
};
8688

test/unit/auto-events.test.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,31 @@ describe("auto-events", function () {
6464
done();
6565
}, 0);
6666
});
67+
68+
it("uses stored href when link changes before callback", function (done) {
69+
const events = [];
70+
const dom = createDOM({
71+
beforeRun(vm) {
72+
vm.sa_event = function (name, metadata, cb) {
73+
events.push({ name, metadata });
74+
setTimeout(cb, 0);
75+
};
76+
vm.sa_event_loaded = true;
77+
},
78+
});
79+
80+
const link = dom.window.document.createElement("a");
81+
link.href = "https://example.com/href";
82+
link.target = "_blank";
83+
dom.window.document.body.appendChild(link);
84+
85+
dom.window.saAutomatedLink(link, "outbound");
86+
87+
link.removeAttribute("href");
88+
89+
setTimeout(() => {
90+
expect(events[0]).to.deep.include({ name: "outbound_example_com" });
91+
done();
92+
}, 5);
93+
});
6794
});

0 commit comments

Comments
 (0)