Satellite.getVar change

Avatar

Avatar

Locutus243

Avatar

Locutus243

Locutus243

05-11-2019

Since the most recent update to the Core and Adobe Analytics extensions has anybody noticed some differences in behaviour in the satellite.getVar function?

We were using it in a couple of data elements and it doesn't seem to be working correctly...but if I replace that line in our custom code with the relevant javascript string then it seems to work ok.

Wondered if anybody else had encountered such an issue?

Accepted Solutions (0)

Answers (6)

Answers (6)

Avatar

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250
ursboller
MVP

06-11-2019

try to give the event to the dataElement:

_satellite.getVar("de-name",event);

Avatar

Avatar

1640

Avatar

1640

1640

28-11-2019

If the rule that is firing is an Event Type of Direct Call, then the Data Element doesn't have access to `getVar`. You can access the values inside the Data Element through `event.detail.name`, and `event.detail.value`.

Avatar

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250
ursboller
MVP

06-11-2019

maybe there's something wrong how you pass the event to the dataElement? what code do you use to pass the event to the dataElement?

Avatar

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250

Avatar

ursboller

MVP

Total Posts

1.0K

Likes

484

Correct Answer

250
ursboller
MVP

05-11-2019

you mean that the getVar doesn't return the correct data? and it is not a timing issue?

Avatar

Avatar

Locutus243

Avatar

Locutus243

Locutus243

06-11-2019

It's as simple as:

-------------------------------------------------

    var closest = event.target.closest("[data-track]");

    if (closest !== null) {

      return closest.dataset.track;

    }

    if (closest.parentElement.dataset.track !== null) {

      return closest.parentElement.dataset.track;

    }

  }

-------------------------------------------------

But this effectively drives our rules. So I know the data element is working...otherwise our rules wouldn't fire. We also pass this value into a Prop for debugging (which also works). And when I try the code itself instead of using the satellite then that also works.

So I know the code works OK. Seemingly the only flaw is the satellite.

Avatar

Avatar

Locutus243

Avatar

Locutus243

Locutus243

05-11-2019

It's not returning a value...and I don't think it's a timing issue. I've been trying to debug using console logs. Maybe I can explain...

Into a data element we pass event.target to define what has been clicked. We then in another element call what has been clicked..e.g. _satellite.getVar("Clicked")

To check what is being returned, in that second data element I've added console.log(_satellite.getVar("Clicked") and it returns a null value.

But then directly after I add console.log(event.target) and this value comes through fine.

That's what leading me to believe it is something wrong with the _satellite.getVar function.