沙箱模式 JavaScript 是 JavaScript 語言的簡化子集,
能讓您安全地從 Google 代碼執行任意 JavaScript 邏輯
自訂範本為了提供安全的執行環境,一些
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']);