Code de base
Le code de base permet le démarrage en mettant les commandes en file d’attente pendant le chargement asynchrone du Adobe Experience Platform Web SDK. Une fois le code de base exécuté, vous pouvez appeler immédiatement n’importe quelle commande telle que configure ou sendEvent sans vous soucier des conditions de concurrence ou du timing de la bibliothèque une fois le chargement terminé. Lorsque le chargement du SDK Web se termine, les commandes placées en file d’attente s’exécutent dans l’ordre « premier entré, premier sorti » (ordre dans lequel elles étaient placées en file d’attente).
Les commandes renvoient des promesses, même lorsqu’elles sont placées en file d’attente. Si une commande est mise en file d’attente, la promesse est résolue ou refusée une fois la commande exécutée lorsque le chargement du SDK Web se termine. Si le chargement du SDK Web n’est jamais terminé (par exemple, le chargement de la bibliothèque échoue), les promesses en file d’attente restent en attente.
Ajouter le code de base
Placez le code de base aussi haut que possible dans la balise <head>, avant tout script pouvant appeler le SDK Web.
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
(window,["alloy"]);
</script>
Après avoir ajouté le code de base, chargez le SDK Web à l’aide de la méthode choisie (chargeur de bibliothèque JavaScript ou code intégré de balises). Pour les implémentations basées sur des balises, le code de base est pris en charge dans l’extension de balise Web SDK 2.34.0 et les versions ultérieures.
Lorsque le code de base est requis
- Bibliothèque : Obligatoire. La bibliothèque JavaScript repose sur l’instance et la file d’attente de commandes créées par le code de base. Ce dernier doit donc s’exécuter avant le chargement de la bibliothèque. Cette exigence s’applique que la balise
<script>soit asynchrone ou synchrone, car elle concerne l’ordre de chargement plutôt que l’attributasync. - Package NPM avec
createInstance(): Non requis. Lorsque vous importez la bibliothèque et appelez directementcreateInstance(), elle renvoie une fonction d’instance à votre code sans dépendance sur le code de base. - Extension de balise Web SDK : prise en charge, mais généralement pas nécessaire. L’extension de balise utilise un code de base déjà présent si elle en trouve un. Il vous suffit d’ajouter le code de base si votre implémentation fait référence au Web SDK en dehors de votre bibliothèque de balises. La plupart des implémentations de balises n’appellent le Web SDK que dans les règles ou actions de balise. Par conséquent, la plupart n’ont pas besoin du code de base.
Exemples
Voir les commentaires dans cet exemple de code pour comprendre la durée de mise en file d’attente et de résolution des commandes. Cet exemple s’applique à la fois à la bibliothèque JavaScript et à l’extension de balise :
<head>
<script>
// Calls made before the base code runs are not captured (alloy is not yet defined).
// Always make sure that the base code runs before any attempt to call commands.
// alloy("getLibraryInfo").then(console.log).catch(console.error);
</script>
<!-- Base code -->
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
(window,["alloy"]);
</script>
<!-- Queued command -->
<script>
alloy("getLibraryInfo").then(result => {
console.log("Queued call resolved:", result);
}).catch(console.error);
</script>
<!-- Load the Web SDK using the JavaScript loader -->
<script src="https://cdn1.adoberesources.net/alloy/<VERSION>/alloy.min.js" async></script>
<!-- or the tag extension -->
<!-- <script src=".../launch-<ENV>.min.js" async></script> -->
<!-- Another call (queued if the library is still loading; immediate if it is ready) -->
<script>
alloy("getLibraryInfo").then(result => {
console.log("Immediate call resolved:", result);
}).catch(console.error);
</script>
</head>
Renommer l’instance SDK
Vous pouvez renommer la fonction globale appelée en modifiant la dernière ligne du code de base. Modification :
(window,["alloy"]);
A :
(window,["ingot"]);
Cette modification vous permet d’appeler des commandes à l’aide de ingot au lieu de alloy :
ingot("configure", {
datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg"
});
Plusieurs instances SDK
Vous pouvez éventuellement utiliser le code de base pour configurer plusieurs instances SDK sur une page. Pour plus d’informations🔗 voir Utilisation de plusieurs instances Web SDK .