Korumalı alana sahip JavaScript, Google Etiket Yöneticisi'nin özel şablonlarından rastgele JavaScript mantığı yürütmenin güvenli bir yolunu sağlayan JavaScript dilinin basitleştirilmiş bir alt kümesidir. Güvenli bir yürütme ortamı sağlamak için JavaScript'in bazı özellikleri kısıtlanır veya kaldırılır. Korumalı alana sahip JavaScript, ECMAScript 5.1'e dayanır. Ok işlevleri ve const
/let
bildirimleri gibi bazı ECMAScript 6 özellikleri kullanılabilir.
Genel yürütme ortamı
Korumalı alana sahip JavaScript, normal JavaScript gibi standart global yürütme ortamında yürütülmez. Bu nedenle window
nesnesi ve özellikleri kullanılamaz. Buna encodeURI
veya setTimeout
gibi genel kapsamda tanımlanan yöntemler, location
veya document
gibi genel değerler ve yüklenen komut dosyaları tarafından tanımlanan genel değerler dahildir. Bunun yerine, bu işlevlerin çoğunu sağlayan korumalı alana sahip tüm JavaScript'lerde genel bir require
işlevi kullanılabilir. Değerler copyFromWindow
yardımcı programı kullanılarak pencereden okunabilir.
Basitleştirilmiş tür sistemi
Korumalı alana sahip JavaScript şu türleri destekler: null
, undefined
, string
, number
, boolean
, array
, object
ve function
. Diziler ve nesneler, hazır söz dizimi ( [] {}
) kullanılarak oluşturulur ve standart küresel yürütme ortamına erişim olmadığından String()
ve Number()
gibi global oluşturucular kullanılamaz. Korumalı alana alınmış JavaScript'te new
anahtar kelimesi yok ve işlevler this
anahtar kelimesine erişemiyor.
Bazı yerel tür yöntemleri de kaldırıldı. Desteklenen yerel tür yöntemlerin kapsamlı bir listesi için standart kitaplığa bakın.
Özel şablon kodu biçimi
Özel şablon uygulamak için yazılan kod, etiketiniz tetiklendiğinde veya değişkeniniz değerlendirildiğinde yürütülecek işlevin gövdesini temsil eder. Bu işlevde, söz konusu etiket veya değişken örneği için kullanıcı arayüzünde yapılandırılan tüm değerleri barındıran tek bir veri parametresi (data
) vardır. Bu parametre, özel şablonda belirtilen şablon parametrelerinin adları için anahtarlarla ayarlanmıştır.
Örnek işaretçi etiketi uygulaması
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']);