إعلانات AdSense لا يتم إعادة تحميلها عند التنقل بين المواضيع أو في صفحات جدول المحتويات، أخطاء رفض frame-src CSP وأخطاء استثناءات غير معالجة EmberJS

أواجه العديد من المشاكل في تشغيل الإعلانات على موقع Discourse في https://howtodiscuss.com.

  1. أخطاء كثيرة من نوع DOM Exception لم يتم التقاطها، فقط انتقل إلى أي صفحة موضوع في وضع التصفح المتخفي وستراها https://howtodiscuss.com/t/profit/7022

  1. والخطأ الآخر هو أنه عند التنقل إلى موضوع جديد من صفحة موضوع قديمة، أرى تحذيرًا في وحدة التحكم، حيث يتم عرض إعلان Google Vignette، ولكن بسبب هذا التحذير يختفي الإعلان ويتم التنقل بالصفحة، وبالتالي لا يتمكن المستخدم أبدًا من النقر على إعلانات Google Vignette البينية التي تظهر بين تحميل/تنقل الصفحات.

    إشعار بعدم التوصية: إزالة جميع مستمعي الأحداث دفعة واحدة غير موصى به، يرجى إزالة كل مستمع على حدة. How many ounces is a 1 4 cup - How To Discuss

  1. أحاول أيضًا عرض إعلان Google ثابت ملتصق في الشريط الجانبي الأيمن لصفحة الموضوع الواحد، باستخدام هذا الكود:

كود JavaScript لإدراج إعلان ثابت ملتصق في الشريط الجانبي للموضوع، نحتاج لجعله يعمل مع جدول المحتويات (ToC) أيضًا

<!-- plugin code to show fixed ad-->

<script type = "text/discourse-plugin"
version = "0.8" >
	var friends_retries = 0;
var friends_timeout;

api.decorateWidget('topic-timeline-container:before', helper => {
	return helper.h('div.side-block', [
		helper.rawHtml('<div id="friends"></div>'),
	]);
});

api.onPageChange(() => {


	if (window.location.href.indexOf("/t/") > -1) {
		console.log('page changed - topic');
		friends_retries = 0;
		window.setTimeout(loadFriends, 100);

	} else {
		//console.log( 'page changed - not topic');
	}
});

function loadFriends() {

	if (!document.getElementById('friends')) {
		//var timer;
		friends_retries++;
		if (friends_retries < 10) {
			//console.log('timeout rescheduled, try ' + friends_retries);
			window.setTimeout(loadFriends, 100);
		} else {
			clearTimeout(friends_timeout);
			// window.clearTimeout(loadFriends);

			console.log('timeout cleared, gave up');
			// loadFriends();
		}
	} else {


		var bHTML = ' <!-- Topic side bar timeline HTD --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7087907313091932" data-ad-slot="5067761793" data-ad-format="auto" data-full-width-responsive="true"></ins>';

		// var bHTML = '<img src="https://via.placeholder.com/300x250?text=300x250+MPU" alt="Girl in a jacket">';

		$("#friends").html(bHTML);


	}
}


</script>
<!-- plugin code to show fixed ad-->

وهنا كود CSS الخاص به:

/*for fixed ad*/
/* timeline layout fix 2.6.0.beta5 */
@media screen and (min-width: 925px) {
    .container.posts .topic-navigation {
        margin-left: 7em;
    }
}

#friends {
    display:block;
    //width:300px; 

    height:150px;
    margin-left:-90px;
    margin-top:-25px;
    margin-bottom:90px;
}
/*for fixed ad*/

في بعض الأحيان يعمل هذا الكود، لكنه لا يعمل على الصفحة التي يظهر فيها جدول المحتويات (ToC)، على سبيل المثال لا يعمل على How Many Grams In A Quarter Ounce? - How To Discuss

هل يمكن لأحد تصحيح خطئي في الكود بحيث يعمل أيضًا على صفحات جدول المحتويات (ToC)؟

  1. لاحظت أيضًا خطأ آخر في كودي وفي كود إضافة الإعلانات العامة لـ Discourse، فعند التنقل من صفحة إلى أخرى، لا يتم تحديث كود إعلان AdSense الخاص بي أبدًا ولا يتم إعادة تحميله، وبالتالي لا يتم تفعيل أي انطباع إعلاني. ربما لأن Discourse لا يعيد تحميل الصفحة بالكامل عند التنقل. أريد أن يتم تحديث الإعلانات وإعادة تحميل الصفحة بالكامل من أي تنقل عبر الروابط، كيف يمكنني إصلاح ذلك؟

  2. أحصل أيضًا على العديد من أخطاء frame-src هذه على موقعي، https://howtodiscuss.com/t/how-mouthwash-rinse-become-a-necessary-step-in-oral-hygiene/30631

Refused to frame 'https://pagead2.googlesyndication.com/' because it violates the following Content Security Policy directive: "frame-src cm.g.doubleclick.net googleads.g.doubleclick.net www.google.com accounts.google.com pagead2.googlesyndication.com/pagead/s/cookie_push.html gmsg: https://tpc.googlesyndication.com/sadbundle/$csp=er3$/1522577804659956528/index.html".

هذا هو شكل إعدادات سياسة أمان المحتوى (CSP) الخاصة بي:

لكنني لا أعرف كيفية إضافة عناوين iframe الخاصة بإعلانات Google إلى القائمة البيضاء؟ لقد جربت أيضًا هذا الكود، لكنه لا يعمل بشكل جيد، ولا أزال أرى أخطاء frame-src المذكورة أعلاه،
إذا أضفت قيمًا بجانب frame-src في الوسم meta، فسيظهر لي خطأ مفاده أننا لا يمكننا استخدام frame-src في وسم meta.

<!--<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; frame-src  ; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->

سيكون ذلك مساعدة كبيرة إذا تمكن أحد من مساعدتي في حل مشاكلي،

أحصل حتى على مثل هذه الأخطاء على صفحتي الرئيسية، https://howtodiscuss.com/ (لإعادة إنتاج الأخطاء، افتح الصفحة في وضع التصفح المتخفي، أو استخدم شبكة افتراضية خاصة (VPN)، أو ببساطة قم بالتحديث عدة مرات أو انتقل إلى صفحات أخرى، وستجد الأخطاء في وحدة تحكم JavaScript، وستشاهد أيضًا اختفاء Google Vignette دون منح المستخدم فرصة للنقر على الإعلان)

آمل أن يتمكن أحد من المساعدة.

موقعي مستضاف على Cloudflare، وأنا أحدث إصدار من Discourse وهو 2.6.0.beta6، لقد قمت بتحديث كل شيء بما في ذلك جميع الإضافات، وقمت أيضًا بإعادة بناء Docker للتو. ومع ذلك، لا أزال أرى هذه الأخطاء.

من الممكن أن يكون هذا هو السبب في المشاكل التي تواجهها. راجع بعض مواضيع الدعم المتعلقة بـ Cloudflare لمعرفة ما إذا كانت هناك أي إشارات حول مشاكل إعدادات Cloudflare التي قد تسبب هذه المشاكل: Search results for 'cloudflare #support' - Discourse Meta.

فهمت أنه يجب عليك التأكد من تعطيل تحسينات السرعة والأداء الخاصة بـ Cloudflare لـ JavaScript و CSS و HTML لضمان عملها بشكل صحيح مع Discourse.

3 إعجابات

شكرًا لك يا @simon على ردك السريع.

بناءً على نصيحتك، قمت بإيقاف Cloudflare، و Brotli، وأوقفت جميع عمليات التصغير (Minification) الخاصة بها لملفات CSS و JS و HTML. كما قمت بإيقاف Rocket Loader.

لقد قمت أيضًا بمسح ذاكرة التخزين المؤقت (Cache) الخاصة بـ CF، وانتظرت 30 دقيقة لاختبار النتائج، لكنني ما زلت أحصل على أخطاء غريبة في وحدة تحكم JS (JS Console) عندما أكون في الصفحة الرئيسية https://howtodiscuss.com و

عند التنقل إلى صفحات المواضيع الخاصة بي، Catholic rosary - How To Discuss

يمكنك تكرار هذه الأخطاء بفتح موقعي في متصفح Chrome في وضع التصفح المتخفي (Incognito) ومحاولة التنقل إلى بعض الصفحات/المواضيع على موقعي.

أيضًا، هل تعرف لماذا يظهر إعلانات AdSense الثابتة والمثبتة على الجانب الأيمن من خط زمني الموضوع/تنقل الموضوع فقط عندما أقوم بإعادة تحميل الصفحة بالكامل باستخدام أيقونة تحديث المتصفح، أو عندما أصل إلى موقعي لأول مرة، ولكن في أي عمليات تحميل لاحقة للصفحة، لا يتم تشغيل الدالة لإظهار إعلاني، ولا يكتشف أن صفحة الموضوع قد تغيرت.

يدخل الكود في كتلة else هذه في كل مرة، هل هناك خطأ في منطق إضافة Discourse المخصصة الخاصة بي للكشف عن تنقل المستخدم إلى صفحة موضوع؟ أريد إظهار وإعادة تحميل إعلان AdSense جديد في كل مرة، لكنه يدخل في كتلة else، حيث يعتقد الكود أن المعرف #friends موجود بالفعل، لكنه لا يتم إعادة تحميله أبدًا إلا إذا قمت بإجراء تحديث كامل صارم (FULL HARD REFRESH). تم مسح مهلة الانتظار، استسلمت.

من فضلك ساعدني، يمكنك تصفح مواضيع موقعك بنفسك، وستجد جميع المشاكل في وحدة تحكم JS، كما أحصل على هذا التحذير في وحدة تحكم JS ولا يبقى إعلان Google Vignette أبدًا ليتمكن المستخدم من النقر عليه.

إشعار إهمال: إزالة جميع مستمعي الأحداث دفعة واحدة أصبح غير مستحسن، يرجى إزالة كل مستمع على حدة.

لقد قمت بإيقاف تحسينات السرعة الخاصة بـ CF وفقًا لاقتراحاتك، وتصغير ملفات CSS/JS/HTML، و Rocket Loader، و Brotli. ما الذي يمكن أن يكون المشكلة الآن؟ هل يمكن أن تكون إضافة Discourse هي المشكلة؟ هذه هي الإضافات الخاصة بي حاليًا،

شهادة SSL الخاصة بي صارمة، هل يمكن أن تكون هذه هي المشكلة؟

لقد قمت للتو بإعادة بناء الموقع من جديد أيضًا، فقط في حالة حدوث تغييرات بعد إعادة البناء.. لكن الأخطاء لا تزال هي نفسها، لقد اختبرت مرة أخرى :(.

إعجابَين (2)