जब Protected Audience API की मदद से की गई नीलामी में कोई विज्ञापन कैंडिडेट मिलता है, तो उसे अपारदर्शी यूआरएन के तौर पर दिखाया जा सकता है. इसका इस्तेमाल iframe में विज्ञापन रेंडर करने के लिए किया जाता है. इसके अलावा, इसे FencedFrameConfig के तौर पर भी दिखाया जा सकता है. इसका इस्तेमाल फ़ेन्स्ड फ़्रेम में विज्ञापन रेंडर करने के लिए किया जाता है.
इस गाइड में बताया गया है कि फ़ेंस किया गया फ़्रेम क्या होता है और इसकी ज़रूरत क्यों होती है. साथ ही, यह भी बताया गया है कि दोनों में से किसी भी तरीके का इस्तेमाल करके विज्ञापन कैसे रेंडर किया जाता है. फ़ेन्स्ड फ़्रेम के बारे में ज़्यादा जानने के लिए, इस गाइड या प्रस्ताव में ज़्यादा जानकारी पाएं.
फ़ेंस्ड फ़्रेम क्या होते हैं?
फ़ेंस्ड फ़्रेम (<fencedframe>), एम्बेड किए गए कॉन्टेंट के लिए एचटीएमएल एलिमेंट होता है. यह iframe की तरह होता है. iframe के उलट, फ़ेंस्ड फ़्रेम, एम्बेड करने के कॉन्टेक्स्ट के साथ कम्यूनिकेशन पर पाबंदी लगाता है, ताकि फ़्रेम दूसरी साइट पर मौजूद डेटा को, एम्बेड करने के कॉन्टेक्स्ट के साथ शेयर किए बिना ऐक्सेस कर सके. इसी तरह, एम्बेड करने के कॉन्टेक्स्ट में मौजूद पहले पक्ष के किसी भी डेटा को फ़ेन्स्ड फ़्रेम के साथ शेयर नहीं किया जा सकता.
उदाहरण के लिए, मान लें कि news.example (एम्बेड करने का कॉन्टेक्स्ट) shoes.example से मिले विज्ञापन को फ़ेन्स्ड फ़्रेम में एम्बेड करता है. news.example, shoes.example विज्ञापन से डेटा नहीं चुरा सकता. साथ ही, news.example से पहले पक्ष (ग्राहक) का डेटा नहीं सीख सकता.shoes.example
फ़ेन्स्ड फ़्रेम कैसे काम करते हैं?
फ़ेंस किए गए फ़्रेम, नेविगेशन के लिए FencedFrameConfig ऑब्जेक्ट का इस्तेमाल करते हैं. इस ऑब्जेक्ट को Protected Audience API से जुड़ी नीलामी से वापस लाया जा सकता है. इसके बाद, कॉन्फ़िगरेशन ऑब्जेक्ट को फ़ेंस किए गए फ़्रेम एलिमेंट पर config एट्रिब्यूट के तौर पर सेट किया जाता है. यह iframe से अलग है. iframe एट्रिब्यूट को यूआरएल या ओपेक यूआरएन असाइन किया जाता है.src FencedFrameConfig ऑब्जेक्ट में, सिर्फ़ पढ़ने के लिए उपलब्ध url प्रॉपर्टी होती है. हालांकि, इस्तेमाल के मौजूदा उदाहरणों में इंटरनल संसाधन के असली यूआरएल को छिपाने की ज़रूरत होती है. इसलिए, इस प्रॉपर्टी को पढ़ने पर यह अपारदर्शी स्ट्रिंग दिखाती है.
फ़ेंस किए गए फ़्रेम, एम्बेड करने वाले व्यक्ति या कंपनी से कम्यूनिकेट करने के लिए postMessage का इस्तेमाल नहीं कर सकते.
हालांकि, फ़ेंस किए गए फ़्रेम में postMessage का इस्तेमाल किया जा सकता है. साथ ही, फ़ेंस किए गए फ़्रेम के अंदर iframes का इस्तेमाल किया जा सकता है.
फ़ेन्स्ड फ़्रेम, पब्लिशर से अन्य तरीकों से अलग किए जाएंगे. पब्लिशर के पास, फ़ेन्स्ड फ़्रेम के अंदर मौजूद डीओएम का ऐक्सेस नहीं होगा. साथ ही, फ़ेन्स्ड फ़्रेम, पब्लिशर के डीओएम को ऐक्सेस नहीं कर पाएगा. इसके अलावा, name जैसे एट्रिब्यूट, फ़ेन्स्ड फ़्रेम में उपलब्ध नहीं होते. इन्हें पब्लिशर, किसी भी वैल्यू पर सेट कर सकता है और देख सकता है.
फ़ेंस किए गए फ़्रेम, टॉप-लेवल के ब्राउज़िंग कॉन्टेक्स्ट (जैसे कि ब्राउज़र टैब) की तरह काम करते हैं. कुछ इस्तेमाल के उदाहरणों (जैसे कि opaque-ads) में, फ़ेंस किए गए फ़्रेम में क्रॉस-साइट डेटा (जैसे कि Protected Audience API इंटरेस्ट ग्रुप) शामिल हो सकता है. हालांकि, फ़्रेम, अनपार्टिशन किए गए स्टोरेज या कुकी को ऐक्सेस नहीं कर सकता. opaque-ads फ़ेंस्ड फ़्रेम, यूनीक और नॉनस पर आधारित कुकी और स्टोरेज पार्टीशन को ऐक्सेस कर सकता है.
एक्सप्लेनर में, फ़ेंस किए गए फ़्रेम की विशेषताओं के बारे में ज़्यादा जानकारी दी गई है.
फ़ेंस किए गए फ़्रेम में विज्ञापन रेंडर करना
Protected Audience की नीलामी से FencedFrameConfig वैल्यू तब मिलती है, जब AuctionConfigs resolveToConfig पैरामीटर को सही पर सेट किया गया हो:
const frameConfig = await navigator.runAdAuction({
// ...auction configuration
resolveToConfig: true
});
कॉन्फ़िगरेशन मिलने के बाद, इसे फ़ेंस किए गए फ़्रेम के config एट्रिब्यूट को असाइन किया जा सकता है. इससे फ़्रेम को कॉन्फ़िगरेशन से दिखाए गए संसाधन पर ले जाया जा सकता है.
Chrome के पुराने वर्शन में resolveToConfig प्रॉपर्टी काम नहीं करती. इसलिए, आपको यह पुष्टि करनी होगी कि नेविगेट करने से पहले, प्रॉमिस FencedFrameConfig पर रिज़ॉल्व हो गया है:
if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
const frame = document.createElement('fencedframe');
frame.config = frameConfig;
}
किसी विज्ञापन को iframe में रेंडर करना
अगर AuctionConfig ने resolveToConfig को साफ़ तौर पर सेट नहीं किया है या इसे गलत पर सेट किया गया है, तो runAdAuction() एक अपारदर्शी यूआरएन दिखाता है. विज्ञापन दिखाने के लिए, इस यूआरएन को iframe के src के तौर पर सेट किया जा सकता है.