सैंडबॉक्स JavaScript, उस JavaScript भाषा का आसान सबसेट है जो
इसकी मदद से, Google टैग से आर्बिट्रेरी JavaScript लॉजिक को सुरक्षित तरीके से एक्ज़ीक्यूट किया जा सकता है
मैनेजर के कस्टम टेंप्लेट. एक सुरक्षित एक्ज़ीक्यूशन एनवायरमेंट देने के लिए, कुछ
JavaScript की सुविधाओं पर पाबंदी लगा दी गई है या उन्हें हटा दिया गया है. सैंडबॉक्स की गई JavaScript
ECMAScript 5.1 वर्शन में अपडेट किया गया है. कुछ ECMAScript 6 की सुविधाएं, जैसे कि ऐरो फ़ंक्शन और
let
में से const
एलान उपलब्ध हैं.
ग्लोबल एक्ज़ीक्यूशन एनवायरमेंट
सैंडबॉक्स की गई JavaScript को स्टैंडर्ड ग्लोबल एक्ज़ीक्यूशन में लागू नहीं किया गया है
सामान्य JavaScript की तरह एनवायरमेंट है, इसलिए window
ऑब्जेक्ट और उसकी प्रॉपर्टी
उपलब्ध नहीं हैं. इसमें ग्लोबल स्कोप में बताए गए तरीके शामिल हैं, जैसे कि
encodeURI
या setTimeout
, ग्लोबल वैल्यू, जैसे कि location
या document
और
लोड की गई स्क्रिप्ट से तय की गई ग्लोबल वैल्यू. इनकी जगह, एक ग्लोबल require
फ़ंक्शन उन सभी सैंडबॉक्स JavaScript के लिए उपलब्ध है जो इनमें से कई
फ़ंक्शन. वैल्यू को विंडो से पढ़ने के लिए,
copyFromWindow
उपयोगिता.
सिंप्लिफ़ाइड टाइप सिस्टम
सैंडबॉक्स की गई JavaScript इन टाइप के साथ काम करती है: null
, undefined
,
string
, number
, boolean
, array
, object
, और function
. सरणियां और
ऑब्जेक्ट लिटरल सिंटैक्स ( [] {}
) का इस्तेमाल करके बनाए जाते हैं, क्योंकि
स्टैंडर्ड ग्लोबल एक्ज़ीक्यूशन एनवायरमेंट का ऐक्सेस, ग्लोबल कंस्ट्रक्टर जैसे
String()
और Number()
उपलब्ध नहीं हैं. में कोई new
कीवर्ड नहीं है
सैंडबॉक्स की गई JavaScript और फ़ंक्शन के पास this
कीवर्ड का ऐक्सेस नहीं है.
नेटिव टाइप के कुछ तरीके भी हटा दिए गए हैं. मानक लाइब्रेरी में
इस्तेमाल किए जा सकने वाले नेटिव टाइप के तरीकों की पूरी सूची.
कस्टम टेंप्लेट के कोड का फ़ॉर्मैट
कस्टम टेंप्लेट को लागू करने के लिए लिखा गया कोड,
फ़ंक्शन को एक्ज़ीक्यूट किया जाएगा, जब आपका टैग सक्रिय होगा या आपका वैरिएबल
मूल्यांकन किया गया. इस फ़ंक्शन में एक डेटा पैरामीटर (data
) है, जिसमें
उस टैग या वैरिएबल इंस्टेंस के लिए यूज़र इंटरफ़ेस (यूआई) में कॉन्फ़िगर की गई वैल्यू, जिसमें कुंजियों के सेट हो
कस्टम टेंप्लेट में तय किए गए टेंप्लेट पैरामीटर के नामों से जोड़ सकता है.
बीकन टैग लागू करने का नमूना
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']);