Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Aşağıdaki senaryolar, GPT'nin uygulanması sırasında gözlemlenen en yaygın hatalardan bazılarını temsil etmektedir. Bu tür uygulamalar GPT'nin geçerli sürümüyle düzgün çalışıyor gibi görünse de, gelecekte de böyle çalışmaları garanti edilmez. En uç durumlarda bu uygulamalar, reklam sunumunun beklenmedik şekillerde kesintiye uğramasına neden olabilir.
Bu uygulamalar desteklenmeyen uygulamalar olarak kabul edilir.
Her senaryoda, gösterilen sorunu düzeltmek için önerilen bir yaklaşım yer alır.
Bu listenin olası sorunların tam kapsamlı bir listesini temsil etmediğini ancak ele alınması gereken sorun türlerini belirlemek için faydalı bir kılavuz görevi görebileceğini unutmayın.
Ayrıca, uygulamanıza bağlı olarak, web sitenizdeki bir şeyin değil de
sitenizde bu tür değişikliklerin yapılması gerekebilir.
Sık Yapılan Yanlışlar
1. Senaryo: GPT JavaScript kitaplıklarının resmi olmayan kopyalarını kullanma
Genel kullanım alanı açıklaması
gpt.js, pubads_impl.js veya yükledikleri kitaplıkları kendi sunucularınızdan barındırmak ya da bu dosyaları resmi olmayan bir kaynaktan yüklemek
Hatalı kod snippet'i örneği
// Incorrect: Accessing these files from an unofficial source
<script async src="https://www.example.com/tag/js/gpt.js"></script>
Hatayı düzeltmek için önerilen yöntemler
// 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>
JavaScript dosyası çalıştırıldığında GPT API'nin çağrılmaya hazır olduğunu varsaymak,
gpt.js yüklenmesi yanlış, çünkü API'nin bazı bölümleri
pubads_impl.js dosya Bu nedenle, komut dosyası etiketine bağlı etkinlik dinleyicilerinden API'ye herhangi bir şekilde (çerçeveler dahil) güvenmek yanlıştır.
Hatalı kod snippet'i örneği
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);
Hatayı düzeltmek için önerilen yollar
// 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);
Düzeltmenin açıklaması
googletag.cmd, GPT'yle hemen çalıştırılacak komutların listesini tutar
hazır. GPT yüklendiğinde geri çağırma işlevinizin çalıştırılmasını sağlamanın doğru yolu budur.
Senaryo 3: GPT'nin hazır olup olmadığını öğrenmek için googletag nesnesini kontrol etme
Genel kullanım alanı açıklaması
GPT API, gpt.js JavaScript dosyası yüklendiğinde veya googletag nesnesi tanımlandığında hazır olmayabilir. Bu nedenle, GPT API'nin kullanılabilir olup olmadığını görmek için bu nesneyi kontrol etmek güvenilir değildir.
Hatalı kod snippet'i örneği
// Incorrect: Relying on the presence of the googletag object
// as a check for the GPT API.
if (typeof googletag != 'undefined') {
functionProcessingGPT();
}
Hatayı düzeltmek için önerilen yollar
// Correct: Relying on googletag.apiReady as a check for the GPT API.
if (window.googletag && googletag.apiReady) {
functionProcessingGPT();
}
Düzeltmenin açıklaması / açıklaması
GPT, boole işaretini doldurur
googletag.apiReady hemen
güvenilir iddialarda bulunabilmeniz için API çağrılmaya hazırdır.
Senaryo 4: Karartılmış kod söz diziminden yararlanma
Karmaşık kullanım alanı açıklaması
Küçültülmüş GPT kitaplık kodunun hassas söz diziminden yararlanıyorsanız neredeyse
kesintiler yaşarsınız. Sürekli iyileştirmeler için GPT'nin işleyişini sürekli olarak değiştirdiğimizden, lütfen API kullanımınızı API Referans Kılavuzu'nda belgelenen API ile sınırlandırın.
Örneğin, refresh()'u çağırmak için PubAdsService'in tamamen yüklendiğini algılamak yaygın bir şarttır.
Hata içeren örnek kod snippet'i
// Incorrect: Relying on an obfuscated property.
if (googletag.pubads().a != null) {
functionProcessingGPT();
}
Hatayı düzeltmek için önerilen yollar
// Correct: Relying on public GPT API methods
// (i.e. googletag.pubadsReady in this case).
if(window.googletag && googletag.pubadsReady) {
functionProcessingGPT();
}
Düzeltmenin açıklaması
Yalnızca herkese açık API'ye güvenilebilir. PubAdsService'in başarılı olup olmadığının tespit edilmesi
bir boole değerimiz var.
googletag.pubadsReady.
5. Senaryo: GPT'deki herhangi bir işlevin veya değişkeninin üzerine yazma
Genel kullanım alanı açıklaması
GPT tarafından kullanılan herhangi bir işlevin veya değişkenin üzerine yazmaya dayalı kullanım alanları her an bozulabilir
desteklenmediğinden emin olun. GPT'nin dahili yapısında yapılan zamanlama değişiklikleri, bu tür yanlış davranışları kesintilerle ortaya çıkarabilir.
Hata içeren örnek kod snippet'i
// Incorrect: Haphazardly overwriting a googletag.* property.
googletag.cmd = [];
Hatayı düzeltmek için önerilen yollar
// Correct: Never overwrite googletag.* properties if they already exist.
// Always check before assigning to them.
googletag.cmd = googletag.cmd || [];
6. senaryo: GPT'ye yapılan aramaların yanlış sıralanması
Genel kullanım alanı açıklaması
GPT'nin iç işleyiş şekli değiştikçe yarış koşulları kesintiye neden olabilir. Yürütmedeki belirli zamanlamalar nedeniyle işlevsel olan ancak yanlış sıralanmış bir ifade grubu gelecekte çalışmayabilir.
JavaScript değişkeni kapsamı ve işlevde yakalanan değişkenlerin değeri hakkında yanlış varsayımlar googletag.cmd.push'e iletilir.
Hatalı kod snippet'i örneği
// 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]);
})
}
}
Hatayı düzeltmek için önerilen yollar
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]);
}
}
)
Düzeltmenin açıklaması
JavaScript'te, kapanışlar değişkenleri değere göre değil referansa göre yakalar. Bunun anlamı şudur:
bir değişken yeniden atanırsa, bu durumda fonksiyon
yakalanan kapatma işlemi daha sonra yürütülür. Bu nedenle, geri çağırma işlevinin hemen mi yoksa gecikmeli mi yürütüldüğüne bağlı olarak, kapatmadaki kodun davranışı değişebilir.
Eşzamansız olarak yüklenen GPT'de, GPT'nin ne kadar hızlı yükleneceğine bağlı olarak komut kuyruğundaki geri çağırma işlevleri hemen yürütülebilir veya yürütülmeyebilir. Önceki örnekte bu, sıraya alınmış komutların davranışını değiştirir.
Herhangi bir sorun yaşamamak için kod, komut kuyruğuna yerleştirilen işlevlerin hemen yürütüleceği varsayımı olmadan yazılmalı ve JavaScript'in kapsam kurallarına dikkat edilmelidir.
Senaryo 8: Gösterim çağrısından sonra slot kapsayıcılarını DOM içinde taşıma
Karmaşık kullanım alanı açıklaması
Ekranı çağırdıktan sonra alan kapsayıcılarını DOM'ye taşımak veya eklemek
istenmeyen yeniden düzenleme ve öngörülemeyen davranışlara neden olur.
Hata içeren örnek kod snippet'i
// 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"));
Hatayı düzeltmek için önerilen yöntemler
// 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");
9. senaryo: Tarayıcı API'lerinin üzerine yazma
Genel kullanım alanı açıklaması
GPT'de tarayıcı API'lerinin üzerine yazma (diğer adıyla maymun yamalama, çoklu doldurma) desteklenmez.
Bu uygulama, GPT gibi üçüncü taraf komut dosyalarını beklenmedik şekillerde bozabilir.
// Correct: Avoid making changes to browser APIs.
// If you need custom logic, consider leaving the browser API intact.
const myFetch = (...args) => {
console.log('Fetching!');
return window.fetch(...args);
}
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2024-10-14 UTC."],[[["Avoid unofficial copies of GPT JavaScript libraries, always access them from an official Google domain."],["Utilize `googletag.cmd.push` to queue functions and ensure they execute when GPT is ready, rather than relying on script tag listeners or checking the `googletag` object directly."],["Strictly adhere to the documented GPT API and refrain from relying on obfuscated code or overwriting any GPT functions or variables to prevent breakages."],["Maintain the correct order of GPT calls, like defining page-level settings and slots before enabling services and displaying ads, to avoid race conditions."],["Be mindful of JavaScript variable scoping and closures, especially when using `googletag.cmd.push`, to prevent unexpected behavior due to delayed execution."],["Ensure slot containers are positioned correctly in the DOM before calling `display` to avoid reflows and unpredictable rendering."],["Refrain from overwriting browser APIs, as it can negatively impact the functionality of third-party scripts like GPT."]]],[]]