Expand my Community achievements bar.

SOLVED

Dynamically calling _satellite.pageBottom()

Avatar

Level 1

Hi team,

My requirement is, in the head tag, will be loading adobe tracking js file..

I don't wanna include assignment of digitalData object and calling of _satellite.pageBottom() in body tag...

After the load of DOM, in another Js file, i will be doing assignment of digitalData and calling of _satellite.pageBottom()

If i do it in this way, 2 times call is going to metrics...

1st time from DomReady in adobe tracking js file..(by the time domready gets called, as there is no script of calling pageBottom in document)...its firing pageBottom....

2nd time when i call in external js file...

Can we eliminate DomReady call, So, that the call which i do in my js file will alone be calling pageBottom....

The reason, why i do it in separate js file is, document title will be loading will be loaded dynamically in our application(not in the initial page load)...

We change document load after DOM loading...So, we wanna assign digital Obj once document title gets updated...

Can someone help me in this...

1 Accepted Solution

Avatar

Correct answer by
Level 10

No, deploying DTM in the way you have indicated is unsupported as it can lead to unexpected results. The duplicate calls is just one of those results. The DOM Ready calls _satellite.pageBottom() if the page bottom hasn't already been fired.

I'm not aware of a way to change that without heavily modifying the DTM library. If you need a more custom approach to what DTM offers, I'd suggest looking into Launch. Launch was redesigned to accommodate more advanced implementations and even allows you to deploy it asynchronously. You can learn more about Launch on the Launch, by Adobe community.

View solution in original post

2 Replies

Avatar

Correct answer by
Level 10

No, deploying DTM in the way you have indicated is unsupported as it can lead to unexpected results. The duplicate calls is just one of those results. The DOM Ready calls _satellite.pageBottom() if the page bottom hasn't already been fired.

I'm not aware of a way to change that without heavily modifying the DTM library. If you need a more custom approach to what DTM offers, I'd suggest looking into Launch. Launch was redesigned to accommodate more advanced implementations and even allows you to deploy it asynchronously. You can learn more about Launch on the Launch, by Adobe community.

Avatar

Level 2

Hi @sunilrongali

You don't need to modify "heavily" the DTM library but just deactivate the automatic pageBottom putting the following  line in your page:

_satellite.pageBottomFired = true;

DTM will consider that the pageBottom is already executed and will not launch fire the safeguard automatic call. So, you will able to fire it programmatically (as example, in a callback, when your digital data layer is ready for it).

Regards,