at.js Limitations

There are some differences between at.js and mbox.js. This section lists some of the differences and limitations, to help you be successful with at.js.

This section contains the following information:

Known Visual Experience Composer Limitations

  • Insert Element and Rearrange options in the Visual Experience Composer should be avoided in single-page apps.

    Because the DOM is not cleared on page load events in single-page apps like it is with traditional websites, the Insert Element and Rearrange manipulations might be reapplied multiple times depending on how the visitor navigates the SPA.

Integrations and Plugins

Some functions within mbox.js are not available in at.js. Internal mbox.js objects and methods (such as mbox, mboxCurrent, mboxFactoryDefault, mboxFactories, and others) are no longer supported by at.js (example: mboxFactoryDefault). This is by design, intended to discourage you from "hacking" at.js to develop unsupported functionality that over the long term can cripple an implementation and make it impossible to upgrade. The only exposed methods are covered in the API pages of this documentation. Because of this:

Asynchronous Considerations

Because all mboxes are now asynchronous, they won't block page rendering or return in the order in which they fired.

  • Legacy page-based Target to Analytics integration will not work.

    This integration requires that the Target call is made before the Analytics call.

  • Beware of JavaScript dependencies between your offer and the page.

    You should not assume that the JavaScript in your offer is going to execute before the hardcoded JavaScript below the mbox.

  • Beware of JavaScript dependencies between multiple offers on the page.

    You can no longer assume that the offer delivered by the first mbox is going to execute before the offer delivered by your second mbox.

  • DOM Manipulation and Redirect offers should be delivered through the auto-created global mbox in at.js and delivered in the <head>.

    An mboxCreate() function at the top of the <body> will likely result in flicker of default content.