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) ที่เก็บ ที่กำหนดค่าไว้ใน 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']);