Le code JavaScript de bac à sable est un sous-ensemble simplifié du langage JavaScript qui
offre un moyen sûr d'exécuter une logique JavaScript arbitraire à partir de la balise Google
Modèles personnalisés du gestionnaire. Pour fournir un environnement d'exécution sécurisé,
sont limitées ou supprimées. Le code JavaScript de bac à sable est basé
sur ECMAScript 5.1. Certaines fonctionnalités d'ECMAScript 6, comme les fonctions fléchées
const
déclarations sur let
sont disponibles.
Environnement d'exécution global
Le code JavaScript de bac à sable n'est pas exécuté lors de l'exécution globale standard
comme le code JavaScript normal. Ainsi, l'objet window
et ses propriétés
ne sont pas disponibles. Cela inclut les méthodes définies dans le champ d'application global, telles que
encodeURI
ou setTimeout
, des valeurs globales comme location
ou document
, et
les valeurs globales définies par les scripts chargés. À la place, un require
mondial
est disponible pour tous les scripts JavaScript de bac à sable qui fournissent un grand nombre de ces
fonctions. Les valeurs peuvent être lues dans la fenêtre à l'aide de la propriété
copyFromWindow
.
Système de types simplifié
Le code JavaScript de bac à sable est compatible avec les types suivants: null
, undefined
,
string
, number
, boolean
, array
, object
et function
. Tableaux et
sont créés à l'aide de la syntaxe littérale ( [] {}
) et, comme il n'existe pas
un accès à l'environnement d'exécution global standard, aux constructeurs globaux tels que
String()
et Number()
ne sont pas disponibles. Aucun mot clé new
dans
le code JavaScript mis en bac à sable et les fonctions n'ont pas accès au mot clé this
.
Certaines méthodes de types natifs ont également été supprimées. Consultez la bibliothèque standard pour obtenir
liste exhaustive des méthodes de types natifs compatibles.
Format du code du modèle personnalisé
Le code écrit pour implémenter un modèle personnalisé représente le corps d'un
qui sera exécutée chaque fois que votre balise est déclenchée ou que votre variable est
évalué. Cette fonction comporte un seul paramètre de données (data
) qui contient toutes les
configurées dans l'interface utilisateur pour cette balise ou instance de variable, les clés étant définies
par les noms des paramètres de modèle spécifiés dans le modèle personnalisé.
Exemple d'implémentation d'un tag de balise
const sendPixel = require('sendPixel');
const encodeUri = require('encodeUri');
const encodeUriComponent = require('encodeUriComponent');
let url = encodeUri(data['url']);
if (data['useCacheBuster']) {
const encode = require('encodeUriComponent');
const cacheBusterQueryParam = data['cacheBusterQueryParam'] || 'gtmcb';
const last = url.charAt(url.length - 1);
let delimiter = '&';
if (url.indexOf('?') < 0) {
delimiter = '?';
} else if (last == '?' || last == '&') {
delimiter = '';
}
url += delimiter +
encodeUriComponent(cacheBusterQueryParam) + '=' + encodeUriComponent(data['randomNumber']);
}
sendPixel(url, data['gtmOnSuccess'], data['gtmOnFailure']);