-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Labels
Description
Is seems that the ACDL script is adding events to the adobeDataLayer array only after the callbacks of the events have completed. This leads to an odd ordering of the event entries in the adobeDataLayer array.
Consider the following script:
``{{html
<!doctype html>
window.adobeDataLayer.push(function (dl) {
dl.addEventListener("one", function () {
logItemEvent("2: ", 0);
logItemEvent("2: ", 1);
dl.push({ event: "two" });
logItemEvent("3: ", 0);
logItemEvent("3: ", 1);
});
logItemEvent("1: ", 0);
logItemEvent("1: ", 1);
dl.push({ event: "one" });
logItemEvent("4: ", 0);
logItemEvent("4: ", 1);
function logItemEvent(prependText, item) {
if (dl[item> && dl<item>.event) {
return console.log(prependText<ins>"adobeDataLayer<"</ins>item<ins>">.event = "</ins>dl<item>.event);
}
return console.log(prependText<ins>"adobeDataLayer<"</ins>item<ins>"> = "</ins>dl<item>);
}
});
</script>
</head>
<body></body>
The resulting log output is:
1: adobeDataLayer<0> = undefined
1: adobeDataLayer<1> = undefined
2: adobeDataLayer<0> = undefined
2: adobeDataLayer<1> = undefined
3: adobeDataLayer<0>.event = two
3: adobeDataLayer<1> = undefined
4: adobeDataLayer<0>.event = two
4: adobeDataLayer<1>.event = one
But the expected output would have been:
1: adobeDataLayer<0> = undefined
1: adobeDataLayer<1> = undefined
2: adobeDataLayer<0> = one
2: adobeDataLayer<1> = undefined
3: adobeDataLayer<0>.event = one
3: adobeDataLayer<1> = two
3: adobeDataLayer<0>.event = one
3: adobeDataLayer<1> = two
It would be expected that the ACDL appends the event object to the adobeDataLayer array prior to calling the callbacks that have been registered to that event, and not after. Because otherwise, notice how the events one and two end up in the reverse order.