Tài liệu này trình bày các quyền đối với Mẫu tuỳ chỉnh cho web.
Mỗi quyền là:
- Được kiểm tra bởi các API yêu cầu chúng.
- Tự động phát hiện trong JavaScript được đưa vào hộp cát, dựa trên những API được dùng. Điều này xảy ra khi bạn chỉnh sửa trong trình chỉnh sửa mẫu tuỳ chỉnh (để có vòng phản hồi nhanh) và khi mã được biên dịch (để xác thực rằng các quyền chính xác được thực thi).
- Có thể chỉnh sửa trong trình chỉnh sửa mẫu tuỳ chỉnh để cấp quyền cụ thể hơn.
- Có thể truy vấn trong JavaScript hộp cát thông qua API
queryPermission
.
access_globals
Tên hiển thị: Truy cập vào các biến toàn cục
Nội dung mô tả: Cho phép truy cập vào một biến toàn cục (có thể bao gồm các API nhạy cảm).
Cấu hình: Danh sách các khoá có thể truy cập. Mỗi khoá là một đường dẫn được phân tách bằng dấu chấm. Ví dụ: foo.bar
Mã thông báo đầu tiên trong mỗi đường dẫn không được là một khoá được xác định trước trên phạm vi toàn cầu của trình duyệt, cũng không được là một từ khoá JavaScript. Có các hộp đánh dấu đọc, ghi và thực thi để kiểm soát quyền truy cập.
Bắt buộc đối với: setInWindow
, copyFromWindow
, callInWindow
,
createQueue
, createArgumentsQueue
Chữ ký truy vấn: queryPermission('access_globals', 'read', <key to read
from>)
hoặc queryPermission('access_globals', 'write', <key to write to>)
hoặc queryPermission('access_globals', 'readwrite', <key to read and write>)
hoặc queryPermission('access_globals', 'execute', <key of function to execute>)
Lưu ý: Kiểm soát việc liệu mẫu tuỳ chỉnh có thể đọc và/hoặc ghi vào các giá trị chung hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const createQueue = require('createQueue');
if (queryPermission('access_globals', 'readwrite', 'dataLayer')) {
const dataLayerPush = createQueue('dataLayer');
}
access_local_storage
Tên hiển thị: Truy cập vào bộ nhớ trên thiết bị
Mô tả: Cho phép truy cập vào các khoá đã chỉ định trong bộ nhớ cục bộ.
Cấu hình: Danh sách các khoá bộ nhớ cục bộ có thể truy cập. Đây là một mảng khoá đơn giản, không có ký tự đại diện. Có các hộp đánh dấu đọc và ghi để kiểm soát quyền truy cập.
Bắt buộc theo: localStorage
Chữ ký truy vấn: queryPermission('access_local_storage', 'read', <key to
read from>)
hoặc queryPermission('access_local_storage', 'write', <key to write
to>)
hoặc queryPermission('access_local_storage', 'readwrite', <key to read and
write>)
Mã ví dụ
const queryPermission = require('queryPermission');
const localStorage = require('localStorage');
const key = 'my_key';
if (queryPermission('access_local_storage', 'read', key)) {
const value = localStorage.getItem(key);
}
access_template_storage
Tên hiển thị: Truy cập vào bộ nhớ mẫu
Mô tả: Cho phép truy cập vào bộ nhớ tạm thời cho các mẫu có thể duy trì trong suốt thời gian tồn tại của trang.
Cấu hình: Không có
Bắt buộc theo: templateStorage
Chữ ký truy vấn: queryPermission('access_template_storage')
Mã ví dụ
const queryPermission = require('queryPermission');
const templateStorage = require('templateStorage');
const key = 'my_key';
if (queryPermission('access_template_storage')) {
const value = templateStorage.getItem(key);
}
get_cookies
Tên hiển thị: Đọc(các) giá trị cookie
Nội dung mô tả: Đọc các giá trị của cookie có tên được chỉ định.
Cấu hình: Danh sách tên của các cookie được phép đọc.
Bắt buộc theo: getCookieValues
Chữ ký truy vấn: queryPermission('get_cookies', <name>)
Lưu ý: Chi phối việc có thể đọc cookie hay không, tuỳ thuộc vào tên của cookie.
Mã ví dụ
const queryPermission = require('queryPermission');
const getCookieValues = require('getCookieValues');
const cookieName = 'info';
let cookieValues;
if (queryPermission('get_cookies', cookieName)) {
cookieValues = getCookieValues(cookieName);
}
get_referrer
Tên hiển thị: Đọc URL liên kết giới thiệu
Mô tả: Cho phép quyền đọc đối với các phần bị thu hẹp của giá trị giới thiệu.
Cấu hình: Các giá trị boolean sau đây chi phối phần nào của giá trị giới thiệu có thể được đọc. Bạn chỉ có thể đọc một phần nhất định của giá trị giới thiệu nếu phần tương ứng là true
. Phương thức gọi có thể gọi getReferrerUrl
mà không cần chỉ định một thành phần để lấy URL giới thiệu đầy đủ nếu tất cả các giá trị boolean này được đặt thành true
. Nếu bạn không đặt giá trị, giá trị mặc định sẽ là all
. Nếu bạn đặt một giá trị, thì giá trị đó phải là một mảng các thành phần, trong đó một thành phần là một trong những thành phần sau: protocol
, host
, port
, path
, query
hoặc extension
.
queryKeys
:
Nếu chọn truy vấn, thì tác giả mẫu có thể giới hạn thêm tập hợp khoá truy vấn mà họ có thể đọc. Đây là một mảng khoá đơn giản, không có ký tự đại diện.
Bắt buộc theo: getReferrerUrl
, getReferrerQueryParameters
Chữ ký truy vấn: queryPermission('get_referrer', <url_component>)
Mã ví dụ
const queryPermission = require('queryPermission');
const getReferrerUrl = require('getReferrerUrl');
let referrer;
if (queryPermission('get_referrer', 'query')) {
referrer = getReferrerUrl('queryParams');
}
get_url
Tên hiển thị: Đọc URL
Nội dung mô tả: Trả về một phần hoặc toàn bộ URL của trang hiện tại.
Cấu hình: Các giá trị boolean sau đây chi phối phần nào của URL có thể được đọc. Bạn chỉ có thể đọc một phần nhất định của URL nếu phần tương ứng là true. Phương thức gọi có thể gọi getUrl
mà không cần chỉ định thành phần để lấy toàn bộ URL nếu và chỉ khi tất cả các giá trị boolean này được đặt thành true
. Nếu bạn không đặt giá trị, giá trị mặc định sẽ là all
. Nếu bạn đặt một giá trị, thì giá trị đó phải là một mảng gồm các thành phần, trong đó một thành phần là một trong những thành phần sau: protocol
, host
, port
, path
, query
, extension
hoặc fragment
.
queryKeys
:
Nếu chọn truy vấn, thì tác giả mẫu có thể giới hạn thêm tập hợp khoá truy vấn mà họ có thể đọc. Đây là một mảng khoá đơn giản, không có ký tự đại diện.
Bắt buộc theo: getUrl
Chữ ký truy vấn: queryPermission('get_url', <optional url component>,
<optional query key>)
Nếu được cung cấp, thành phần Url phải là một trong các thành phần 'protocol'
, 'host'
, 'port'
, 'path'
, 'query'
, 'extension'
, 'fragment'
. Nếu bị bỏ qua, truy vấn quyền là yêu cầu truy cập vào toàn bộ URL.
Nếu được cung cấp, khoá truy vấn phải là đối số chuỗi truy vấn mà mã mẫu muốn đọc.
Lưu ý: Kiểm soát việc mẫu tuỳ chỉnh có thể đọc từ vị trí hiện tại hay không. Cho phép giới hạn ở một phần cụ thể của vị trí.
Mã ví dụ
const queryPermission = require('queryPermission');
const getUrl = require('getUrl');
if (queryPermission('get_url', 'query', 'gclid')) {
const gclid = getUrl('query', false, null, 'gclid');
}
inject_hidden_iframe
Tên hiển thị: Chèn các iframe ẩn
Nội dung mô tả: Chèn một iframe ẩn bằng một URL cụ thể.
Cấu hình: Danh sách mẫu URL
Bắt buộc theo: injectHiddenIframe
Chữ ký truy vấn: queryPermission('inject_hidden_iframe', <url>)
Lưu ý: Chi phối việc liệu một mẫu tuỳ chỉnh có thể chèn một iFrame ẩn hay không và mẫu đó có thể làm như vậy từ nguồn gốc nào.
Mã ví dụ
const queryPermission = require('queryPermission');
const injectHiddenIframe = require('injectHiddenIframe');
const url = 'https://www.example.com/iframes';
if (queryPermission('inject_hidden_iframe', url)) {
injectHiddenIframe(url);
}
inject_script
Tên hiển thị: Chèn tập lệnh
Nội dung mô tả: Chèn một tập lệnh vào trang.
Cấu hình: Danh sách mẫu URL
Bắt buộc theo: injectScript
Chữ ký truy vấn: queryPermission('inject_script', <url>)
Lưu ý: Chi phối việc mẫu tuỳ chỉnh có thể chèn JavaScript hay không và mẫu tuỳ chỉnh có thể chèn từ nguồn gốc nào.
Mã ví dụ
const queryPermission = require('queryPermission');
const injectScript = require('injectScript');
const url = 'https://www.example.com?api.js';
if (queryPermission('inject_script', url)) {
injectScript(url);
}
ghi nhật ký
Tên hiển thị: Ghi nhật ký vào bảng điều khiển
Nội dung mô tả: Ghi nhật ký vào Developer Console và chế độ xem trước của GTM.
Cấu hình: Lựa chọn bật tính năng ghi nhật ký trong quá trình phát hành công khai. Theo mặc định, chỉ cho phép ghi nhật ký trong quá trình gỡ lỗi/xem trước. Nếu quyền bị từ chối, logToConsole
sẽ không đưa ra lỗi mà sẽ chặn thông báo nhật ký.
Bắt buộc theo: logToConsole
Chữ ký truy vấn: queryPermission('logging')
Lưu ý: Kiểm soát việc liệu một mẫu tuỳ chỉnh có thể ghi nhật ký vào bảng điều khiển dành cho nhà phát triển hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const logToConsole = require('logToConsole');
// Note that it's fine to call log, since the log call will be ignored if
// logging isn't permitted in the current environment.
logToConsole('diagnostic info');
read_data_layer
Tên hiển thị: Đọc lớp dữ liệu
Mô tả: Đọc dữ liệu từ dataLayer.
Cấu hình: Tập hợp các biểu thức so khớp khoá, trong đó biểu thức so khớp khoá có thể là một chuỗi tham chiếu có dấu chấm ở đầu, có ký tự đại diện ở cuối. Các biểu thức so khớp khoá sẽ chi phối những thuộc tính có thể được đọc từ lớp dữ liệu.
Bắt buộc theo: copyFromDataLayer
Chữ ký truy vấn: queryPermission('read_data_layer', <data layer key to read
from>)
Lưu ý: Kiểm soát việc mẫu tuỳ chỉnh có thể đọc từ lớp dữ liệu hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const copyFromDataLayer = require('copyFromDataLayer');
const dlKey = 'foo.bar';
if (queryPermission('read_data_layer', dlKey)) {
const dlContents = copyFromDataLayer(dlKey);
}
read_analytics_storage
Tên hiển thị: Đọc dữ liệu được lưu trữ trong Analytics
Nội dung mô tả: Thao tác này cho phép các mẫu đọc dữ liệu phân tích được lưu trữ, chẳng hạn như Mã nhận dạng khách hàng.
Cấu hình: Không có
Bắt buộc theo: readAnalyticsStorage
Chữ ký truy vấn: queryPermission('read_analytics_storage')
Lưu ý: Chi phối việc liệu mẫu tuỳ chỉnh có thể đọc dữ liệu từ bộ nhớ phân tích hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const readAnalyticsStorage = require('readAnalyticsStorage');
if (queryPermission('read_analytics_storage')) {
const value = readAnalyticsStorage();
}
read_character_set
Tên hiển thị: Đọc bộ ký tự trong tài liệu
Nội dung mô tả: Đọc document.characterSet
.
Cấu hình: Không có
Bắt buộc theo: readCharacterSet
Chữ ký truy vấn: queryPermission('read_character_set')
Lưu ý: Chi phối việc mẫu tuỳ chỉnh có thể đọc document.characterSet
hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const readCharacterSet = require('readCharacterSet');
if (queryPermission('read_character_set')) {
const characterSet = readCharacterSet();
}
read_container_data
Tên hiển thị: Đọc dữ liệu vùng chứa
Nội dung mô tả: Đọc dữ liệu về vùng chứa.
Cấu hình: Không có
Bắt buộc theo: getContainerVersion
Chữ ký truy vấn: queryPermission('read_container_data')
Lưu ý: Kiểm soát việc mẫu tuỳ chỉnh có thể đọc dữ liệu về vùng chứa hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const getCookieValues = require('getContainerVersion');
let version;
if (queryPermission('read_container_data')) {
version = getContainerVersion();
}
read_event_metadata
Tên hiển thị: Đọc siêu dữ liệu sự kiện
Nội dung mô tả: Đọc siêu dữ liệu sự kiện trong lệnh gọi lại sự kiện
Cấu hình: Không có
Bắt buộc theo: addEventCallback
Chữ ký truy vấn: queryPermission('read_event_metadata')
Lưu ý: Kiểm soát việc liệu mẫu tuỳ chỉnh có thể đọc siêu dữ liệu sự kiện trong các lệnh gọi lại hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const addEventCallback = require('addEventCallback');
if (queryPermission('read_event_metadata')) {
addEventCallback((containerId, eventMetadata) => {
// Read event metadata.
});
}
read_title
Tên hiển thị: Đọc tựa đề tài liệu
Nội dung mô tả: Đọc document.title
.
Cấu hình: Không có
Bắt buộc theo: readTitle
Chữ ký truy vấn: queryPermission('read_title')
Lưu ý: Chi phối việc mẫu tuỳ chỉnh có thể đọc document.title
hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const readTitle = require('readTitle');
if (queryPermission('read_title')) {
const title = readTitle();
}
send_pixel
Tên hiển thị: Gửi pixel
Nội dung mô tả: Gửi yêu cầu GET đến một URL đã chỉ định. Câu trả lời không được xử lý.
Cấu hình: Danh sách các mẫu URL được phép.
Bắt buộc theo: sendPixel
Chữ ký truy vấn: queryPermission('send_pixel', <url>)
Lưu ý: Chi phối việc liệu mẫu tuỳ chỉnh có thể gửi yêu cầu GET hay không và mẫu đó có thể gửi yêu cầu đến nguồn nào.
Mã ví dụ
const queryPermission = require('queryPermission');
const sendPixel = require('sendPixel');
const url = 'https://www.example.com?foo=3';
if (queryPermission('send_pixel', url)) {
sendPixel(url);
}
set_cookies
Tên hiển thị: Đặt cookie
Mô tả: Đặt một cookie có tên và thông số đã chỉ định.
Cấu hình: Bảng tên cookie được phép, mỗi tên có các hạn chế không bắt buộc về tên, miền, đường dẫn, thuộc tính secure
và thời gian hết hạn.
Bắt buộc theo: setCookie
Chữ ký truy vấn: queryPermission('set_cookies', <name>, <options>)
Lưu ý: Chi phối việc có thể ghi cookie hay không, tuỳ thuộc vào tên, miền, đường dẫn, thuộc tính secure
và thời gian hết hạn của cookie.
Mã ví dụ
const queryPermission = require('queryPermission');
const setCookie = require('setCookie');
const options = {
'domain': 'www.example.com',
'path': '/',
'max-age': 60*60*24*365,
'secure': true
};
if (queryPermission('set_cookies', 'info', options)) {
setCookie('info', 'xyz', options);
}
write_data_layer
Tên hiển thị: Ghi lớp dữ liệu
Nội dung mô tả: Ghi dữ liệu vào dataLayer.
Cấu hình: Tập hợp các biểu thức so khớp khoá, trong đó biểu thức so khớp khoá có thể là một chuỗi tham chiếu có dấu chấm ở đầu, có ký tự đại diện ở cuối. Các biểu thức so khớp khoá chi phối những thuộc tính có thể ghi vào lớp dữ liệu.
Bắt buộc theo: gtagSet
Chữ ký truy vấn: queryPermission('write_data_layer', <data layer key to
write from>)
Lưu ý: Kiểm soát việc mẫu tuỳ chỉnh có thể ghi vào lớp dữ liệu hay không.
Mã ví dụ
const queryPermission = require('queryPermission');
const gtagSet = require('gtagSet');
const dlKey = 'foo.bar';
if (queryPermission('write_data_layer', dlKey)) {
gtagSet({dlKey: 'baz'});
}