স্যান্ডবক্সড জাভাস্ক্রিপ্ট হল জাভাস্ক্রিপ্ট ভাষার একটি সরলীকৃত উপসেট যা Google ট্যাগ ম্যানেজারের কাস্টম টেমপ্লেটগুলি থেকে নির্বিচারে জাভাস্ক্রিপ্ট লজিক চালানোর একটি নিরাপদ উপায় প্রদান করে। একটি নিরাপদ কার্যকরী পরিবেশ প্রদান করতে, JavaScript এর কিছু বৈশিষ্ট্য সীমাবদ্ধ বা সরানো হয়েছে। স্যান্ডবক্সড জাভাস্ক্রিপ্ট ECMAScript 5.1 এর উপর ভিত্তি করে। কিছু ECMAScript 6 বৈশিষ্ট্য যেমন তীর ফাংশন এবং const
/ let
ঘোষণা উপলব্ধ।
বিশ্বব্যাপী মৃত্যুদন্ড পরিবেশন
স্যান্ডবক্সড জাভাস্ক্রিপ্ট সাধারণ জাভাস্ক্রিপ্টের মতো স্ট্যান্ডার্ড গ্লোবাল এক্সিকিউশন এনভায়রনমেন্টে কার্যকর করা হয় না, তাই window
অবজেক্ট এবং এর বৈশিষ্ট্যগুলি পাওয়া যায় না। এর মধ্যে রয়েছে বিশ্বব্যাপী পরিসরে সংজ্ঞায়িত পদ্ধতি যেমন encodeURI
বা setTimeout
, location
বা document
মতো বিশ্বব্যাপী মান এবং লোড করা স্ক্রিপ্ট দ্বারা সংজ্ঞায়িত বৈশ্বিক মান। এগুলোর জায়গায়, একটি গ্লোবাল require
ফাংশন সব স্যান্ডবক্সড জাভাস্ক্রিপ্টের জন্য উপলব্ধ যা এই ফাংশনগুলির অনেকগুলি প্রদান করে। copyFromWindow
ইউটিলিটি সহ উইন্ডো থেকে মানগুলি পড়া যায়।
সরলীকৃত টাইপ সিস্টেম
স্যান্ডবক্সড জাভাস্ক্রিপ্ট নিম্নলিখিত প্রকারগুলিকে সমর্থন করে: null
, undefined
, string
, number
, boolean
, array
, object
, and function
. আক্ষরিক সিনট্যাক্স ( [] {}
) ব্যবহার করে অ্যারে এবং অবজেক্ট তৈরি করা হয় এবং স্ট্যান্ডার্ড গ্লোবাল এক্সিকিউশন এনভায়রনমেন্টে কোনো অ্যাক্সেস না থাকায়, String()
এবং Number()
এর মতো গ্লোবাল কনস্ট্রাক্টর পাওয়া যায় না। স্যান্ডবক্সযুক্ত জাভাস্ক্রিপ্টে কোন new
কীওয়ার্ড নেই, এবং ফাংশনগুলির this
কীওয়ার্ডটিতে অ্যাক্সেস নেই। কিছু নেটিভ টাইপ পদ্ধতিও সরানো হয়েছে। সমর্থিত নেটিভ টাইপ পদ্ধতির একটি সম্পূর্ণ তালিকার জন্য স্ট্যান্ডার্ড লাইব্রেরি দেখুন।
কাস্টম টেমপ্লেট কোড বিন্যাস
একটি কাস্টম টেমপ্লেট বাস্তবায়নের জন্য লেখা কোডটি একটি ফাংশনের মূল অংশকে প্রতিনিধিত্ব করে যেটি কার্যকর করা হবে যখনই আপনার ট্যাগ ফায়ার করা হবে বা আপনার ভেরিয়েবলের মূল্যায়ন করা হবে। এই ফাংশনের একটি একক ডেটা প্যারামিটার ( data
) রয়েছে যা সেই ট্যাগ বা পরিবর্তনশীল উদাহরণের জন্য UI-তে কনফিগার করা সমস্ত মান ধারণ করে, কাস্টম টেমপ্লেটে নির্দিষ্ট করা টেমপ্লেট প্যারামিটারগুলির নামের সাথে সেট করা কীগুলি।
নমুনা বীকন ট্যাগ বাস্তবায়ন
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']);