JavaScript وضع الحماية

إنّ لغة JavaScript "وضع الحماية" هي مجموعة فرعية مبسّطة من لغة JavaScript توفّر طريقة آمنة لتنفيذ منطق JavaScript عشوائي من علامة Google. النماذج المخصصة للمدير. لتوفير بيئة تنفيذ آمنة، تتضمن بعض حظر ميزات JavaScript أو إزالتها. يعتمد تطبيق JavaScript الذي تم وضع الحماية عليه في الإصدار ECMAScript 5.1. تتضمن بعض ميزات ECMAScript 6 مثل دوال السهم يتوفّر const من إجمالي let بيان.

بيئة التنفيذ العامة

لا يتم تنفيذ 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']);