Hiển thị quảng cáo

Khi phiên đấu giá trong Protected Audience trả về một đề xuất quảng cáo, hệ thống có thể trả về nội dung đề xuất đó dưới dạng URN không rõ ràng dùng để hiển thị quảng cáo trong iframe hoặc FencedFrameConfig dùng để hiển thị quảng cáo trong khung bảo vệ.

Hướng dẫn này sẽ giải thích khung bảo vệ là gì và lý do cần có khung này, cũng như cách hiển thị quảng cáo bằng một trong hai phương pháp. Để hiểu rõ hơn về khung bảo vệ, hãy tìm thêm thông tin trong hướng dẫn này hoặc trong đề xuất.

Khung bảo vệ là gì?

Khung bảo vệ (<fencedframe>) là một phần tử HTML cho nội dung được nhúng, tương tự như iframe. Không giống như iframe, khung bảo vệ hạn chế hoạt động giao tiếp thông qua ngữ cảnh nhúng để cho phép khung truy cập vào dữ liệu trên nhiều trang web mà không cần chia sẻ dữ liệu đó với ngữ cảnh nhúng. Tương tự, mọi dữ liệu của bên thứ nhất trong bối cảnh nhúng đều không được chia sẻ với khung được bảo vệ.

Ví dụ: giả sử news.example (ngữ cảnh nhúng) nhúng quảng cáo từ shoes.example trong khung bảo vệ. news.example không thể đánh cắp dữ liệu từ quảng cáo shoes.exampleshoes.example không thể tìm hiểu dữ liệu của bên thứ nhất từ news.example.

Khung bảo vệ hoạt động như thế nào?

Khung bảo vệ sử dụng đối tượng FencedFrameConfig để điều hướng. Hệ thống có thể trả về đối tượng này từ một phiên đấu giá Protected Audience. Sau đó, đối tượng cấu hình được đặt làm thuộc tính config trên phần tử khung được bảo vệ. Mã này khác với iframe, trong đó URL hoặc URN mờ được gán cho thuộc tính src. Đối tượng FencedFrameConfig có một thuộc tính url chỉ có thể đọc; tuy nhiên, vì các trường hợp sử dụng hiện tại yêu cầu ẩn URL thực tế của tài nguyên nội bộ, nên thuộc tính này sẽ trả về chuỗi bị làm mờ khi được đọc.

Khung bảo vệ không thể sử dụng postMessage để giao tiếp với trình nhúng. Tuy nhiên, khung bảo vệ có thể sử dụng postMessage với iframe bên trong khung được bảo vệ.

Khung bảo vệ sẽ được tách biệt với nhà xuất bản theo những cách khác. Nhà xuất bản sẽ không có quyền truy cập vào DOM bên trong khung được bảo vệ và khung được bảo vệ không thể truy cập vào DOM của nhà xuất bản. Ngoài ra, các thuộc tính như name (có thể được đặt thành bất kỳ giá trị nào mà nhà xuất bản có thể quan sát và quan sát) không có trong khung bảo vệ.

Khung bảo vệ hoạt động giống như ngữ cảnh duyệt web cấp cao nhất (chẳng hạn như một thẻ trình duyệt). Mặc dù khung được bảo vệ trong một số trường hợp sử dụng nhất định (chẳng hạn như opaque-ads) có thể chứa dữ liệu trên nhiều trang web (chẳng hạn như nhóm mối quan tâm Protected Audience API), nhưng khung đó không thể truy cập vào bộ nhớ không phân vùng hoặc cookie. Một khung bảo vệ opaque-ads có thể truy cập vào một phân vùng bộ nhớ và cookie duy nhất dựa trên số chỉ dùng một lần.

Các đặc điểm của khung bảo vệ sẽ được trình bày chi tiết hơn trong tài liệu giải thích này.

Hiển thị quảng cáo trong khung bảo vệ

FencedFrameConfig được trả về từ một phiên đấu giá trong Protected Audience, miễn là tham số resolveToConfig của AuctionConfig được đặt thành true:

const frameConfig = await navigator.runAdAuction({
  // ...auction configuration
  resolveToConfig: true
});

Sau khi lấy được cấu hình, bạn có thể chỉ định cấu hình đó cho thuộc tính config của khung bảo vệ để điều hướng khung đó đến tài nguyên do cấu hình biểu thị. Các phiên bản cũ của Chrome không hỗ trợ thuộc tính resolveToConfig, vì vậy, bạn vẫn phải xác nhận rằng lời hứa đã được giải quyết với một FencedFrameConfig trước khi di chuyển:

if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
  const frame = document.createElement('fencedframe');
  frame.config = frameConfig;
}

Hiển thị quảng cáo trong iframe

Nếu AuctionConfig không đặt resolveToConfig một cách rõ ràng hoặc nếu được đặt thành false, thì runAdAuction() sẽ trả về một URN mờ. Bạn có thể đặt URN này làm src của iframe để hiển thị quảng cáo.