


Jennifer_Huynh
Jennifer_Huynh
20-06-2019
Hi,
Is anyone know how to access all activities that are running on the same page via javascript on a offer.
gaureshk3014423
gaureshk3014423
20-06-2019
Hi Jennifer Huynh,
Can you clarify more about your question? What do you mean by "accessing all activities"?
Thanks,
Gauresh Kodag
Jennifer_Huynh
Jennifer_Huynh
20-06-2019
I have 3 activities running on home page. In my activity #3 I want to be able to check if any activity running on the same page. If there is, I would like to access the other activity name and store in a cookie
gaureshk3014423
gaureshk3014423
21-06-2019
I think we can get a list of all activities getting fired on a page in mbox response token and we can use them to create an audience (profile parameter) which you can use for your activity and store list of activities in a cookie with help of javascript custom code.
Okay, Jennifer Huynh let me check on this.
Thanks,
Gauresh Kodag
gaureshk3014423
gaureshk3014423
21-06-2019
You can try creating a rule in Adobe launch on library loaded (Page top) event and fire it on Activity URL where you want to run the test (Activity 3)
Add the following custom code for a rule:
document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
var tokens = e.detail.responseTokens;
if (isEmpty(tokens)) {
return;
}
var activityNames = [];
var experienceNames = [];
var uniqueTokens = distinct(tokens);
uniqueTokens.forEach(function(token) {
activityNames.push(token["activity.name"]);
experienceNames.push(token["experience.name"]);
});
document.cookie="activityName="+activityNames;
});
function isEmpty(val) {
return (val === undefined || val == null || val.length <= 0) ? true : false;
}
function key(obj) {
return Object.keys(obj)
.map(function(k) { return k + "" + obj[k]; })
.join("");
}
function distinct(arr) {
var result = arr.reduce(function(acc, e) {
acc[key(e)] = e;
return acc;
}, {});
return Object.keys(result)
.map(function(k) { return result[k]; });
}
This will store activity names in a cookie
Let me know if this helps
Thanks,
Gauresh Kodag.
Jennifer_Huynh
Jennifer_Huynh
24-06-2019
Can I still use this without Adobe Launch?
gaureshk3014423
gaureshk3014423
24-06-2019
You'll need to make changes in the code according to your need. Using it with Launch would be a more efficient way.
Thanks,
Gauresh Kodag.
Jennifer_Huynh
Jennifer_Huynh
25-06-2019
I am using inside my html offer via target global mbox.
document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e)
(e) always returns undefined.
Thanks
Jennifer_Huynh
Jennifer_Huynh
25-06-2019
document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
console.log("Request succeeded", e.detail);
});
The addEventListener not firing. I created an activity and put my codes inside an offer via target-global-mbox
gaureshk3014423
gaureshk3014423
25-06-2019
Hi Jennifer,
while adding custom code don't forget to put script inside <script></script> tag as follows.
<script>
document.addEventListener(adobe.target.event.REQUEST_SUCCEEDED, function(e) {
console.log("Request succeeded", e.detail);
});
</script>
If you try to run and confirm the same code in the console it won't work. as adobe.target.event.REQUEST_SUCCEEDED is same as a load event. if you want to confirm in console, just change adobe.target.event.REQUEST_SUCCEEDED with 'click' as follows.
document.addEventListener('click', function(e) {
console.log("Request succeeded", e.detail);
});
This will show you output in the messages tab in a console after you click anywhere in the body of page.
I tried in my dummy activity it works. You'll be able to see a message in the messages tab inside the console.
Thanks,
Gauresh Kodag