تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تمثل السيناريوهات التالية بعض الأخطاء الأكثر شيوعًا التي يتم ملاحظتها عند
تنفيذ GPT. وعلى الرغم من احتمال أن تعمل هذه الإجراءات بشكلٍ جيد مع
من GPT، فليس هناك ما يضمن استمرارها في ذلك في المستقبل. في جلسة المعمل،
في معظم الحالات القصوى، قد تؤدي عمليات التنفيذ هذه إلى تعطُّل عرض الإعلانات بطرق غير متوقعة.
وتُعدّ عمليات تنفيذ غير متوافقة.
يتضمّن كل سيناريو نهجًا مقترَحًا لحلّ المشكلة المعروضة.
يُرجى العِلم أنّ هذه القائمة لا تمثّل قائمة شاملة بالمشاكل المحتملة
ولكن يُتوقع أن يكون بمثابة دليل مفيد لتحديد أنواع المشكلات التي قد تحتاج إلى
معالجتها.
علاوةً على ذلك، بناءً على التنفيذ، قد تحتاج إلى البحث عن جميع الأماكن التي
قد تكون هذه التغييرات ضرورية داخل موقعك.
الأخطاء الشائعة
السيناريو 1: استخدام نُسخ غير رسمية من مكتبات JavaScript لـ GPT
وصف حالة استخدام عالية المستوى
استضافة gpt.js أو pubads_impl.js أو أي مكتبات يتم تحميلها من خوادمك الخاصة، أو
تحميل هذه الملفات من مصدر غير رسمي
مثال على مقتطف رمز برمجي به خطأ
// Incorrect: Accessing these files from an unofficial source
<scriptasyncsrc="https://www.example.com/tag/js/gpt.js"></script>
الطرق المقترَحة لإصلاح الخطأ
// Correct: Access these files from a Google domain
<scriptsrc="https://securepubads.g.doubleclick.net/tag/js/gpt.js"crossorigin="anonymous"async></script>
// Also correct, if using Limited Ads
<scriptsrc="https://pagead2.googlesyndication.com/tag/js/gpt.js"async></script>
السيناريو 2: الاعتماد على أدوات معالجة علامات نص gpt.js البرمجي
وصف حالة الاستخدام على مستوى عالٍ
وبافتراض أن واجهة برمجة تطبيقات GPT جاهزة ليتم استدعاؤها عند ملف JavaScript
تم تحميل gpt.js بشكل خاطئ، حيث توفر بعض أجزاء واجهة برمجة التطبيقات بواسطة
ملف pubads_impl.js. الاعتماد بأي شكل من الأشكال (بما في ذلك أُطر العمل) على واجهة برمجة التطبيقات
وبالتالي، فإن مجموعة مستمعي الأحداث من داخل الحدث المرفقة بعلامة النص البرمجي غير صحيحة.
// 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 جاهزًا
وصف حالة الاستخدام على مستوى عالٍ
لأنّ واجهة برمجة تطبيقات GPT قد لا تكون جاهزة عند تحميل ملف JavaScript "gpt.js"
أو عند تعريف الكائن googletag، جارٍ التحقق من ذلك الكائن لمعرفة ما إذا كان
توفر واجهة برمجة تطبيقات GPT غير موثوقة.
مثال على مقتطف رمز برمجي به خطأ
// Incorrect: Relying on the presence of the googletag object// as a check for the GPT API.if(typeofgoogletag!='undefined'){functionProcessingGPT();}
الطرق المقترَحة لإصلاح الخطأ
// Correct: Relying on googletag.apiReady as a check for the GPT API.if(window.googletag&&googletag.apiReady){functionProcessingGPT();}
شرح / وصف الحل
ستعبئ أداة GPT العلامة المنطقية
googletag.apiReady فورما
تصبح واجهة برمجة التطبيقات جاهزة للاستخدام كي تتمكّن من إجراء تأكيدات موثوقة.
السيناريو 4: الاعتماد على بنية التعليمات البرمجية التي تم تشويشها
وصف حالة استخدام عالية المستوى
إذا كنت تعتمد على بنية نحوية دقيقة لرمز مكتبة 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.
السيناريو 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: ترتيب المكالمات إلى علامة "ناشر Google" بشكلٍ خاطئ
وصف حالة استخدام عالية المستوى
قد تؤدي ظروف السباق إلى حدوث أعطال مع تطوّر الأقسام الداخلية في 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. في ما يلي أمثلة على الطلبات الجزئية الصالحة:
تحديد-تفعيل-الشبكة الإعلانية
تحديد الإعدادات على مستوى الصفحة
تحديد الفترات
enableServices()
خانات العرض
Enable-Define-Display
تحديد الإعدادات على مستوى الصفحة
enableServices()
تحديد الفترات
خانات العرض
السيناريو 7: إساءة استخدام عمليات الإغلاق وتحديد نطاق متغيّر JavaScript
وصف حالة استخدام عالية المستوى
افتراضات غير صحيحة حول نطاق متغيّرات JavaScript وقيمة المتغيّرات
التي تمّ رصدها في الدالة التي تمّ تمريرها إلى googletag.cmd.push
في JavaScript، تؤدي عمليات الإغلاق إلى التقاط المتغيرات من خلال المرجع بدلاً من القيمة. وهذا يعني
أنّه في حال إعادة تعيين متغيّر، سيتم استخدام قيمته الجديدة عند تنفيذ العنصر المغلق للدالة
الذي تمّ الاحتفاظ به لاحقًا. ومن ثم سيكون سلوك الرمز في الإغلاق
اعتمادًا على ما إذا يتم تنفيذ معاودة الاتصال على الفور أو تأخيرها.
في حالة تحميل GPT بشكل غير متزامن، بناءً على مدى سرعة تحميل GPT
قد يتم تنفيذ عمليات الاستدعاء في قائمة انتظار الأوامر على الفور أم لا. في المثال السابق
، يؤدي ذلك إلى تغيير سلوك الأوامر التي تم وضعها في "قائمة الانتظار".
لتجنب أي مشكلات، يجب كتابة التعليمات البرمجية دون افتراض أن الدوال
الموضوعة في قائمة انتظار الأوامر على الفور، ويجب توخي الحذر
بخصوص تحديد نطاق قواعد JavaScript.
السيناريو 8: نقل حاويات الخانات داخل DOM بعد استدعاء العرض
وصف حالة الاستخدام على مستوى عالٍ
يمكن أن يؤدي نقل حاويات الخانات أو إدراجها في DOM بعد طلب عرض الإعلان إلى
إعادة تدفق غير مرغوب فيه وسلوك غير متوقّع في GPT.
مثال على مقتطف رمز برمجي به خطأ
// Incorrect: Moving slot containers after calling displaygoogletag.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 displaydocument.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");
لا تتوفر ميزة استبدال البيانات (المعروفة أيضًا باسم "تصحيح القرد" و"الملء التلقائي") في المتصفِّح في مكتبة "علامات ناشر Google".
قد تؤدي هذه الممارسة إلى تعطيل النصوص البرمجية التابعة لجهات خارجية، مثل GPT بطرق غير متوقعة.
تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-25 (حسب التوقيت العالمي المتفَّق عليه)"],[[["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."]]],["The content outlines unsupported methods of implementing GPT (Google Publisher Tag) that may cause unpredictable ad serving issues. Key actions to avoid include: using unofficial GPT JavaScript libraries, relying on script tag listeners or the `googletag` object to determine API readiness, using obfuscated code syntax, overwriting GPT functions/variables, mis-ordering GPT calls, and misusing JavaScript variable scoping. Correct implementations involve using Google-hosted libraries, leveraging `googletag.cmd.push`, respecting API timing, and modifying the DOM before calling display. Also, avoid overwriting browser APIs.\n"]]