लागू करने की आम गलतियों से बचना

नीचे दी गई स्थितियों में, GPT लागू करते समय होने वाली कुछ सबसे आम गलतियों के बारे में बताया गया है. ऐसा हो सकता है कि लागू करने के इस तरह के तरीके, GPT के मौजूदा वर्शन के साथ ठीक से काम करें. हालांकि, इस बात की गारंटी नहीं है कि आने वाले समय में भी ऐसा ही होता रहेगा. ज़्यादातर मामलों में, इन तरीकों से विज्ञापन दिखाने में रुकावट आ सकती है. इसकी वजह से, ऐसा हो सकता है कि विज्ञापन ठीक से काम न करें. इन्हें लागू नहीं किया जा सकता.

हर स्थिति में, दिखाई गई समस्या को ठीक करने के लिए एक सुझाया गया तरीका दिया गया है.

कृपया ध्यान दें कि इस सूची में संभावित समस्याओं की पूरी जानकारी नहीं दी गई है. हालांकि, इससे उन समस्याओं को पहचानने में मदद मिलेगी जिन्हें ठीक करने की ज़रूरत है.

इसके अलावा, लागू करने की प्रोसेस के आधार पर, आपको उन सभी जगहों की जानकारी भी देनी पड़ सकती है जहां आपकी साइट पर ऐसे बदलाव ज़रूरी हो सकते हैं.

आम गलतियां

स्थिति 1: GPT JavaScript लाइब्रेरी की गैर-आधिकारिक कॉपी का इस्तेमाल करना

इस्तेमाल के उदाहरण के बारे में जानकारी gpt.js, pubads_impl.js या आपके अपने सर्वर से लोड की गई किसी भी लाइब्रेरी को होस्ट करना या इन फ़ाइलों को किसी गैर-आधिकारिक सोर्स से लोड करना.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Accessing these files from an unofficial source
<script async src="https://www.example.com/tag/js/gpt.js"></script>
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Access these files from a Google domain
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
// Also correct, if using Limited Ads
<script async src="https://pagead2.googlesyndication.com/tag/js/gpt.js"></script>

दूसरी स्थिति: gpt.js स्क्रिप्ट टैग लिसनर पर भरोसा करना

इस्तेमाल के उदाहरण के बारे में जानकारी यह मानते हुए कि JavaScript फ़ाइल gpt.js के लोड होने पर GPT API कॉल के लिए तैयार है, क्योंकि एपीआई के कुछ हिस्से pubads_impl.js फ़ाइल से उपलब्ध कराए जाते हैं. स्क्रिप्ट टैग से जुड़े इवेंट लिसनर में, एपीआई पर किसी भी तरह (इसमें फ़्रेमवर्क भी शामिल है) पर भरोसा करना गलत है.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
var tag = document.createElement('script');
tag.type = 'text/javascript';
tag.src = (useSSL ? 'https:' : 'http:') +
        ‘//www.googletagservices.com/tag/js/gpt.js';
// Incorrect: Attaching a callback to the script’s onload event.
tag.onload = callback;
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(tag, node);
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Make sure that googletag.cmd exists.
window.googletag = window.googletag || {};
googletag.cmd = googletag.cmd || [];
// Correct: Queueing the callback on the command queue.
googletag.cmd.push(callback);
समस्या हल करने के बारे में जानकारी / जानकारी googletag.cmd में उन निर्देशों की सूची होती है जो GPT के तैयार होते ही चलाए जाएंगे. यह पक्का करने का सही तरीका है कि GPT लोड होने पर आपका कॉलबैक चलता है.

तीसरी स्थिति: googletag ऑब्जेक्ट की जांच करके, यह पता करना कि GPT तैयार है या नहीं

इस्तेमाल के उदाहरण के बारे में जानकारी JavaScript फ़ाइल gpt.js लोड होते समय या googletag ऑब्जेक्ट तय करते समय, हो सकता है कि GPT API तैयार न हो. इसलिए, उस ऑब्जेक्ट की जांच करके देखें कि GPT API भरोसेमंद है या नहीं.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Relying on the presence of the googletag object
// as a check for the GPT API.
if (typeof googletag != 'undefined') {
 functionProcessingGPT();
}
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Relying on googletag.apiReady as a check for the GPT API.
if (window.googletag && googletag.apiReady) {
 functionProcessingGPT();
}
समस्या हल करने के बारे में जानकारी / जानकारी जैसे ही एपीआई कॉल करने के लिए तैयार होगा, GPT बूलियन फ़्लैग googletag.apiReady को भर देगा, ताकि आप सही दावे कर सकें.

चौथा स्थिति: अस्पष्ट कोड सिंटैक्स पर भरोसा करना

इस्तेमाल के उदाहरण के बारे में जानकारी अगर छोटे किए गए GPT लाइब्रेरी कोड के सटीक सिंटैक्स का इस्तेमाल किया जा रहा है, तो आपको रुकावट का अनुभव ज़रूर होगा. कृपया अपने इस्तेमाल को एपीआई रेफ़रंस गाइड में बताए गए एपीआई तक सीमित करें, क्योंकि हम लगातार सुधार करने के लिए, GPT के अंदरूनी कामकाज में लगातार बदलाव कर रहे हैं.
उदाहरण के लिए, refresh() को कॉल करने के लिए, यह पता लगाना एक सामान्य शर्त है कि PubAdsService पूरी तरह से कब लोड हुई.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Relying on an obfuscated property.
if (googletag.pubads().a != null) {
 functionProcessingGPT();
}
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Relying on public GPT API methods
// (i.e. googletag.pubadsReady in this case).
if(window.googletag && googletag.pubadsReady) {
 functionProcessingGPT();
}
समस्या हल करने के बारे में जानकारी / जानकारी सिर्फ़ सार्वजनिक एपीआई पर भरोसा किया जा सकता है. यह पता लगाने के मामले में कि PubAdsService पूरी तरह से लोड है या नहीं, हमारे पास एक बूलियन वैल्यू googletag.pubadsReady है.

स्थिति 5: GPT के किसी भी फ़ंक्शन या वैरिएबल को ओवरराइट करना

इस्तेमाल के उदाहरण के बारे में जानकारी GPT में इस्तेमाल किए गए किसी फ़ंक्शन या वैरिएबल को ओवरराइट करने के आधार पर इस्तेमाल के उदाहरण, किसी भी समय खराब हो सकते हैं. ऐसा इसलिए, क्योंकि यह काम नहीं करता. GPT के अंदरूनी मामलों में समय में होने वाले बदलाव से, इस तरह का गलत व्यवहार दिख सकता है.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Haphazardly overwriting a googletag.* property.
googletag.cmd = [];
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Never overwrite googletag.* properties if they already exist.
// Always check before assigning to them.
googletag.cmd = googletag.cmd || [];

स्थिति 6: GPT को गलत क्रम में कॉल करना

इस्तेमाल के उदाहरण के बारे में जानकारी नस्ल की स्थितियों की वजह से रुकावटें आ सकती हैं, क्योंकि जीपीटी के अंदरूनी हिस्से में बदलाव होता रहता है. अगर स्टेटमेंट का गलत क्रम में ऑर्डर हो गया था, क्योंकि उसे लागू होने की खास समयसीमा तय की गई थी, तो शायद आने वाले समय में वह काम न करे.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Setting page-level key-value targeting after calling
// googletag.enableServices().
googletag.enableServices();
googletag.defineSlot(...);
googletag.pubads().setTargeting(e, a);
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Setting page-level key-value targeting before calling
// googletag.enableServices().
googletag.pubads().setTargeting(e, a);
googletag.defineSlot(...);
googletag.enableServices();
समस्या हल करने के बारे में जानकारी / जानकारी जीपीटी के आम तौर पर इस्तेमाल किए जाने वाले समय का ध्यान रखते हुए, रेस की स्थितियों से बचें. अधूरे ऑर्डर के मान्य उदाहरण में ये शामिल हैं:
  • डिसप्ले को चालू करने के लिए सेटिंग तय करना
    1. पेज-लेवल की सेटिंग तय करना
    2. स्लॉट तय करें
    3. enableServices()
    4. स्लॉट दिखाएं
  • डिसप्ले तय करने की सुविधा चालू करें
    1. पेज-लेवल की सेटिंग तय करना
    2. enableServices()
    3. स्लॉट तय करें
    4. स्लॉट दिखाएं

स्थिति 7: बंद होने की प्रक्रिया और JavaScript वैरिएबल के दायरे का गलत इस्तेमाल करना

इस्तेमाल के उदाहरण के बारे में जानकारी JavaScript वैरिएबल का दायरा और googletag.cmd.push को पास किए गए फ़ंक्शन में कैप्चर किए गए वैरिएबल की वैल्यू के बारे में गलत अनुमान.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Variable x is declared outside the anonymous function
// but referenced within it.
for (var x = 0; x < slotCount; x++) {
 window.googletag.cmd.push(
  function(){
    // If GPT is not yet loaded, this code will be executed subsequently when
    // the command queue is processed. Every queued function will use the last value
    // assigned to x (most likely slotCount).
    // This is because the function closure captures the reference to x,
    // not the current value of x.
    window.googletag.display(slot[x]);
  })
 }
}
गड़बड़ी को ठीक करने के सुझाए गए तरीके
window.googletag.cmd.push(
 function(){
  // Correct: We both declare and reference x inside the context of the function.
  for (var x = 0; x < slotCount; x++){
   window.googletag.display(slot[x]);
  }
 }
)
समस्या हल करने के बारे में जानकारी / जानकारी

JavaScript में, क्लोज़र वैरिएबल को वैल्यू के बजाय रेफ़रंस के हिसाब से कैप्चर किया जाता है. इसका मतलब है कि अगर किसी वैरिएबल को फिर से असाइन किया जाता है, तो इसकी नई वैल्यू का इस्तेमाल तब किया जाएगा, जब कैप्चर करने वाले फ़ंक्शन को बाद में लागू किया जाता है. इसलिए, बंद करने के दौरान कोड के काम करने का तरीका इस बात पर निर्भर करता है कि कॉलबैक को तुरंत लागू किया गया है या देर से शुरू किया गया है.

एसिंक्रोनस रूप से लोड किए गए GPT के मामले में, कमांड सूची पर कॉलबैक को GPT कितनी जल्दी लोड करता है, इसके आधार पर वह तुरंत लागू हो सकता है या नहीं भी. ऊपर दिए गए उदाहरण में, इससे सूची में शामिल कमांड के काम करने का तरीका बदल जाता है.

किसी भी समस्या से बचने के लिए, कोड को बिना यह मानकर लिखा जाना चाहिए कि कमांड सूची में दिए गए फ़ंक्शन तुरंत लागू हो जाएंगे. साथ ही, JavaScript के स्कोपिंग नियमों का भी ध्यान रखना चाहिए.

आठवीं स्थिति: डिसप्ले को कॉल करने के बाद, स्लॉट कंटेनर को डीओएम में ले जाना

इस्तेमाल के उदाहरण के बारे में जानकारी डिसप्ले को कॉल करने के बाद डीओएम में स्लॉट कंटेनर की जगह बदलने या उसे शामिल करने से, ऐसा रीफ़्लो हो सकता है जिसके बारे में उपयोगकर्ताओं ने सोचा न हो और जिसके बारे में अनुमान न लगाया जा सके.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// Incorrect: Moving slot containers after calling display
googletag.defineSlot("/1234/travel/asia", [728, 90], "div-gpt-ad-123456789-0");
googletag.enableServices();
googletag.display("div-gpt-ad-123456789-0");
...
// Inserting another element before the slot container, pushing the slot container down the page.
document.body.insertBefore(someOtherElement, document.getElementById("div-gpt-ad-123456789-0"));
गड़बड़ी को ठीक करने के सुझाए गए तरीके
// Correct: Make any DOM order changes before calling display

document.body.insertBefore(someOtherElement, document.getElementById("div-gpt-ad-123456789-0"));
...
googletag.defineSlot("/1234/travel/asia", [728, 90], "div-gpt-ad-123456789-0");
googletag.enableServices();
googletag.display("div-gpt-ad-123456789-0");