Expand my Community achievements bar.

Help shape the future of AI assistance by participating in this quick card sorting activity. Your input will help create a more effective system that better serves your needs and those of your colleagues.
SOLVED

Providing Global Functions in an Extension

Avatar

Level 3

I know Extensions have shared modules where they can be shared with other extension code.  Can the same structure be used in a piece of custom javascript code deployed as an Action?

We have been developing a set of utilities (similar to what we did in DTM) that we are calling "Useful Things Adobe Should Have Cooked Into Launch" (granted, it needs a less unwieldy name!).  We can load in in custom JS and make the functions available at the window level, but if we could cook it all into an Extension it would be easier to deploy across all of our properties.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Have you looked at the new event type "Custom Code" that is available in the Core extension?   Seems like just the thing for your needs.

It says "The code you provide in the editor will be run as soon as the library is loaded. Inside your code, call trigger() whenever you would like the rule to fire."

View solution in original post

4 Replies

Avatar

Level 3

Quick update.  I wrote an extension that has an action that will create a window-level object that has the various utility functions.  Seems to work OK (VERY limited testing) - I was able to execute commands from the console.

The only downside is you have to run the action in, say, a page load rule to make them available.  Is there a place to put code in an extension that runs regardless of whether or not an action is called?

Avatar

Employee
You can just add the action code to a rules condition. This is always being executed.

Avatar

Level 3

You can use a data element as well and just return a function or object as another option

// data element code

function myFunction(params){

...

}

return myFunction;

var myFunction=_satellite.getVar("dataeleement)("myvalue");

Avatar

Correct answer by
Community Advisor

Have you looked at the new event type "Custom Code" that is available in the Core extension?   Seems like just the thing for your needs.

It says "The code you provide in the editor will be run as soon as the library is loaded. Inside your code, call trigger() whenever you would like the rule to fire."