Expand my Community achievements bar.

Applications for the 2024 Adobe Target Community Mentorship Program are open! Click to the right to learn more about participating as either an Aspirant, to professionally level up with a new Certification, or as a Mentor, to share your Adobe Target expertise and inspire through your leadership! Submit your application today.

How to access all activities via Javascript

Avatar

Level 3

Hi,

Is anyone know how to access all activities that are running on the same page via javascript on a  offer.

16 Replies

Avatar

Employee Advisor

Hi Jennifer Huynh​,

Can you clarify more about your question? What do you mean by "accessing all activities"?

Thanks,

Gauresh Kodag

Avatar

Level 3

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

Avatar

Employee Advisor

Jennifer Huynh

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.

Avatar

Employee Advisor

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.

Avatar

Level 3

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

Avatar

Level 3

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

Avatar

Employee Advisor

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.

requestsucceed.PNG

Thanks,

Gauresh Kodag

Avatar

Level 3

humm

I tried on VEC & form base.  None of them work.  What version of at.js are you using?  I'm using 2.10

Avatar

Employee Advisor

I'm using version 1.7, But I think it should not matter.

Avatar

Employee Advisor

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

Avatar

Level 3

Do you think adobe.target.event.CONTENT_RENDERING_SUCCEEDED can be used to here?

I tried it and it get call but event.detail.responseTokens turns undefined.  There is not property call responseTokens.  Is there a way to work around?

Avatar

Employee Advisor

Hi Jennifer,

I would say it would be tougher for me to discuss it over messages without involving into code level changes in your system environment as your business requirements. Maybe your developer could help much better than me in this. This code must work with few changes as you need.

Or you can reach out to Adobe's client care.

Thanks,

Gauresh kodag.

Avatar

Level 3

Here the issue

The adobe.target.event.REQUEST_SUCCEEDED event is sent out as soon as the response is received from Target, but before the offers are actually applied. The customer included the script that sets up the event listener in a Target offer, thus it's perfectly normal that the event is not intercepted, as the listener is set up after REQUEST_SUCCEEDED event has been already broadcast.

I'd have to put that's scripts on tagging management.

Avatar

Employee

Hi Jennifer,

You can find more information about the response tokens and java script code required to fetch all the Target activities on the page @ Response tokens  (you can refer the video available on the page also)

I would recommend you to implement this using Launch because there you get a option to place this code exactly between the events of 'Load Target on the Page' & 'Fire Target on the Page'.

If the code if fired after or before these events then it does not work.

Regards

Skand Gupt

Avatar

Level 1

I'm trying to do the same, and when adding:

document.addEventListener('click', function(e) {

  console.log("Request succeeded", e.detail);

});

The only response I get is: Request succeeded 1

caa304_0-1695927996986.png

I can see the response tokens in the Network call, but I'm unable to access them via the adobe.target object.