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']);