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

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

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

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

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

आम गलतियां

पहली स्थिति: 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 src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous" async></script>
// Also correct, if using Limited Ads
<script src="https://pagead2.googlesyndication.com/tag/js/gpt.js" async></script>

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

इस्तेमाल के हाई लेवल के उदाहरण के बारे में जानकारी मान लें कि जब JavaScript फ़ाइल, GPT API को कॉल करने के लिए तैयार है gpt.js का लोड होना गलत है, क्योंकि एपीआई के कुछ हिस्से 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 लोड होने के बाद, आपका कॉलबैक चले, यह पक्का करने का यह सही तरीका है.

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

इस्तेमाल के हाई लेवल के उदाहरण के बारे में जानकारी JavaScript फ़ाइल gpt.js के लोड होने पर, हो सकता है कि GPT API तैयार न हो या जब googletag ऑब्जेक्ट तय किया जाता है, तो उस ऑब्जेक्ट की जांच करके यह देखा जाता है कि 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 के और उसके पीछे के कामों में इस्तेमाल किया है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है उदाहरण के लिए, एक सामान्य शर्त यह पता लगाना है कि PubAdsService पूरी तरह लोड है या नहीं refresh() को कॉल करने के लिए ऑर्डर.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// 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 है.

पांचवीं स्थिति: 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 पर कॉल का क्रम गलत होना

इस्तेमाल के हाई लेवल के उदाहरण के बारे में जानकारी 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();
समस्या हल करने की जानकारी / समस्या हल करने की जानकारी GPT के सामान्य समय का पालन करके रेस स्थितियों से बचें. मान्य उदाहरण आंशिक क्रम में शामिल हैं:
  • डिसप्ले को चालू करना
    1. पेज-लेवल सेटिंग तय करना
    2. स्लॉट तय करें
    3. enableServices()
    4. डिसप्ले स्लॉट
  • डिसप्ले को चालू करें
    1. पेज-लेवल सेटिंग तय करना
    2. enableServices()
    3. स्लॉट तय करें
    4. डिसप्ले स्लॉट

सातवीं स्थिति: बंद होने की स्थिति और 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 के दायरे के नियमों के संबंध में है.

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

इस्तेमाल के हाई लेवल के उदाहरण के बारे में जानकारी डिसप्ले कॉल करने के बाद, डीओएम में स्लॉट कंटेनर को एक जगह से दूसरी जगह ले जाने या डालने से, ये नतीजे हो सकते हैं GPT में अनचाहा रीफ़्लो और अनचाहा व्यवहार.
गड़बड़ी वाले कोड स्निपेट का उदाहरण
// 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");