सैंडबॉक्स की हुई JavaScript

सैंडबॉक्स JavaScript, JavaScript भाषा का आसान सेट है. इससे, Google Tag Manager के कस्टम टेंप्लेट से आर्बिट्ररी JavaScript लॉजिक लागू करने का सुरक्षित तरीका मिलता है. JavaScript को सुरक्षित तरीके से एक्ज़ीक्यूट करने के लिए, कुछ सुविधाओं को प्रतिबंधित या हटा दिया जाता है. सैंडबॉक्स की गई JavaScript, ECMAScript 5.1 पर आधारित है. ECMAScript 6 में कुछ सुविधाएं उपलब्ध हैं, जैसे कि ऐरो फ़ंक्शन और const/let एलान.

ग्लोबल एक्ज़ीक्यूशन एनवायरमेंट

सैंडबॉक्स किया गया JavaScript, सामान्य ग्लोबल एक्ज़ीक्यूशन, जैसे कि सामान्य JavaScript में लागू नहीं किया जाता. इसलिए, window ऑब्जेक्ट और इसकी प्रॉपर्टी उपलब्ध नहीं होती हैं. इसमें ग्लोबल स्कोप के encodeURI या setTimeout जैसे ग्लोबल वैल्यू, location या document जैसे ग्लोबल वैल्यू, और लोड की गई स्क्रिप्ट के आधार पर तय किए गए ग्लोबल वैल्यू शामिल हैं. इनके बदले, सैंडबॉक्स किए गए सभी JavaScript के लिए एक ग्लोबल require फ़ंक्शन उपलब्ध होता है, जो इनमें से कई फ़ंक्शन उपलब्ध कराता है. वैल्यू को विंडो से copyFromWindow यूटिलिटी की मदद से पढ़ा जा सकता है.

सिंप्लिफ़ाइड सिस्टम

सैंडबॉक्स की गई JavaScript इन टाइप के साथ काम करती है: null, undefined, string, number, boolean, array, object, और function. अरे और ऑब्जेक्ट, लिटरल सिंटैक्स ( [] {} ) का इस्तेमाल करके बनाए जाते हैं. साथ ही, इनमें ग्लोबल एक्ज़ीक्यूशन एनवायरमेंट तक ऐक्सेस नहीं होता. इसलिए, String() और Number() जैसे कंस्ट्रक्टर वाला कॉन्टेंट उपलब्ध नहीं होता. सैंडबॉक्स की गई JavaScript में कोई new कीवर्ड नहीं है और फ़ंक्शन के पास 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']);