Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

How to access all activities via Javascript

Jennifer_Huynh
Level 3
Level 3

Hi,

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

15 Replies
gaureshk3014423
Level 8
Level 8

Hi Jennifer Huynh​,

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

Thanks,

Gauresh Kodag

Jennifer_Huynh
Level 3
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

gaureshk3014423
Level 8
Level 8

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.

gaureshk3014423
Level 8
Level 8

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
Level 3
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

Jennifer_Huynh
Level 3
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

gaureshk3014423
Level 8
Level 8

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

Jennifer_Huynh
Level 3
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

gaureshk3014423
Level 8
Level 8

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

Jennifer_Huynh
Level 3
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?

gaureshk3014423
Level 8
Level 8

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.

Jennifer_Huynh
Level 3
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.

skandg43264764
Level 4
Level 4

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