JavaScript w trybie piaskownicy to uproszczony podzbiór języka JavaScript, który
zapewnia bezpieczny sposób wykonywania dowolnej logiki JavaScriptu z poziomu tagu Google
Szablony niestandardowe menedżera. Aby zapewnić bezpieczne środowisko wykonawcze, niektóre
funkcje języka JavaScript zostały ograniczone lub usunięte. JavaScript w trybie piaskownicy działa
w środowisku ECMAScript 5.1. niektóre funkcje ECMAScript 6, takie jak funkcje strzałek i
Dostępne deklaracje: const/let.
Globalne środowisko wykonawcze
JavaScript w trybie piaskownicy nie jest wykonywany w standardowym wykonaniu globalnym
jak zwykły JavaScript, więc obiekt window i jego właściwości
są niedostępne. Obejmuje to metody zdefiniowane w zakresie globalnym, takie jak
encodeURI lub setTimeout, wartości globalne, np. location lub document, oraz
globalne wartości zdefiniowane przez wczytane skrypty. W ich miejscu znajduje się globalny require
jest dostępna dla wszystkich JavaScriptu w trybie piaskownicy, które zawierają wiele z tych funkcji
funkcji. Wartości można odczytać z okna za pomocą
copyFromWindow.
Uproszczony system typów
JavaScript w trybie piaskownicy obsługuje te typy: null, undefined,
string, number, boolean, array, object i function. Tablice oraz
obiekty są tworzone przy użyciu składni literału ( [] {}), a ponieważ w funkcji
do standardowego globalnego środowiska wykonawczego, takich jak
globalne konstruktory,
Opcje String() i Number() są niedostępne. Brak słowa kluczowego „new” w:
JavaScript w piaskownicy, więc funkcje nie mają dostępu do słowa kluczowego this.
Niektóre metody korzystania z typów natywnych również zostały usunięte. Znajdź bibliotekę standardową
wyczerpującą listę obsługiwanych metod natywnych.
Niestandardowy format kodu szablonu
Kod napisany w celu implementacji szablonu niestandardowego reprezentuje treść
, która będzie wykonywana przy każdym wywołaniu tagu, lub zmienna
oceniono. Ta funkcja ma pojedynczy parametr danych (data), który zawiera wszystkie
wartości skonfigurowane w interfejsie dla danego tagu lub wystąpienia zmiennej z ustawionymi kluczami;
do nazw parametrów szablonu określonych w szablonie niestandardowym.
Przykładowa implementacja tagu typu beacon
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']);