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']);