Les annonces Adsense ne se rechargent pas lors de la navigation par sujet ou sur les pages ToC, erreurs CSP refusées pour frame-src et erreurs d'exception non interceptées EmberJS

Je rencontre de nombreux problèmes avec l’exécution de publicités sur mon site Discourse à l’adresse https://howtodiscuss.com.

  1. De nombreuses erreurs d’exception DOM non capturées. Il suffit de vous rendre sur n’importe quelle page de sujet en mode incognito pour les voir : https://howtodiscuss.com/t/profit/7022

  1. Une autre erreur survient lorsque je navigue d’un ancien sujet vers un nouveau : un avertissement apparaît dans la console. Une publicité Google Vignette est affichée, mais à cause de cet avertissement, la publicité disparaît et la page navigue. Par conséquent, l’utilisateur ne peut jamais cliquer sur les publicités Google Vignette Interstitial qui apparaissent entre les chargements ou les navigations de page.

    Avis de dépréciation : La suppression de tous les écouteurs d’événements d’un coup est dépréciée ; veuillez supprimer chaque écouteur individuellement. How many ounces is a 1 4 cup - How To Discuss

  1. J’essaie également d’afficher une publicité Google fixe et collante (sticky) dans la barre latérale droite d’une page de sujet unique, en utilisant ce code :

Code JavaScript pour insérer une publicité fixe collante dans la barre latérale du sujet (il faut aussi le rendre compatible avec la Table des Matières - ToC)

<!-- code de plugin pour afficher une publicité fixe -->

<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 changée - sujet');
		friends_retries = 0;
		window.setTimeout(loadFriends, 100);

	} else {
		//console.log( 'page changée - pas un sujet');
	}
});

function loadFriends() {

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

			console.log('timeout effacé, abandon');
			// loadFriends();
		}
	} else {


		var bHTML = ' <!-- Barre latérale du sujet 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>
<!-- code de plugin pour afficher une publicité fixe -->

Voici son code CSS :

/* pour la publicité fixe */
/* correction de la mise en page timeline 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;
}
/* pour la publicité fixe */

Parfois, ce code fonctionne, mais il ne fonctionne pas sur les pages où la Table des Matières (ToC) apparaît, par exemple, cela ne fonctionne pas sur How Many Grams In A Quarter Ounce? - How To Discuss

Quelqu’un peut-il corriger mon erreur dans mon code afin qu’il puisse s’afficher sur les pages avec ToC également ?

  1. J’ai également remarqué un autre bug dans mon code et globalement dans le code du plugin publicitaire Discourse : lorsque je navigue d’une page à une autre, mon code publicitaire AdSense n’est jamais actualisé ni rechargé, il ne déclenche donc aucune impression publicitaire. Peut-être parce que Discourse ne recharge pas entièrement la page lors de la navigation. Je souhaite que les publicités soient actualisées et que la page entière soit rechargée à partir de n’importe quelle navigation par lien. Comment puis-je résoudre ce problème ?

  2. Je reçois également de nombreuses erreurs de type frame-src sur mon site : https://howtodiscuss.com/t/how-mouthwash-rinse-become-a-necessary-step-in-oral-hygiene/30631

Le cadrage de 'https://pagead2.googlesyndication.com/' a été refusé car il viole la directive suivante de la Politique de sécurité du contenu (CSP) : "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".

Voici à quoi ressemblent mes paramètres CSP :

Mais je ne sais pas comment autoriser les requêtes de iframes Google Ads ? J’ai également essayé ce code, mais cela ne fonctionne pas bien ; je vois toujours les erreurs frame-src ci-dessus. Si j’ajoute des valeurs à côté de frame-src dans la balise meta, cela me donne l’erreur indiquant que nous ne pouvons pas utiliser frame-src dans la balise 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'" />-->

Ce serait une aide considérable si quelqu’un pouvait m’aider à résoudre mes problèmes :

Je reçois même de telles erreurs sur ma page d’accueil : https://howtodiscuss.com/ (pour reproduire les erreurs, ouvrez la page en mode incognito, ou utilisez un VPN, ou rafraîchissez simplement plusieurs fois ou naviguez vers d’autres pages ; vous trouverez les erreurs dans la console JS et verrez également la publicité Google Vignette disparaître sans donner à l’utilisateur la chance de cliquer dessus).

J’espère que quelqu’un pourra m’aider.

Mon site est hébergé sur Cloudflare, j’utilise la dernière version de Discourse 2.6.0.beta6. J’ai mis à jour tous les plugins et j’ai également reconstruit Docker à l’instant. Pourtant, je vois toujours ces erreurs.

Il est possible que cela soit la cause des problèmes que vous rencontrez. Consultez quelques sujets de support liés à Cloudflare pour voir si l’un d’eux donne des indices sur des problèmes de configuration de Cloudflare qui pourraient être à l’origine des difficultés : Search results for 'cloudflare #support' - Discourse Meta.

À ma connaissance, vous devez vous assurer que les optimisations de vitesse et de performance de Cloudflare pour JavaScript, CSS et HTML sont désactivées pour qu’il fonctionne correctement avec Discourse.

3 « J'aime »

Merci @simon pour votre réponse rapide.

Conformément à vos conseils, j’ai désactivé Cloudflare, Brotli, et désactivé toutes les minifications pour le CSS, le JS et le HTML. J’ai également désactivé Rocket Loader.

J’ai également vidé le cache de CF et attendu 30 minutes pour tester les résultats, mais je rencontre toujours des erreurs JS étranges dans la console lorsque je suis sur ma page d’accueil https://howtodiscuss.com et

lorsque je navigue vers mes pages de sujets, Catholic rosary - How To Discuss

Vous pouvez reproduire ces erreurs en ouvrant mon site dans le navigateur de navigation privée de Chrome et en essayant de naviguer vers quelques pages/sujets de mon site.

Aussi, savez-vous pourquoi ma publicité AdSense fixe collante sur le côté droit de la chronologie du sujet/navigation du sujet n’apparaît que lorsque je recharge entièrement ma page en utilisant l’icône de rafraîchissement du navigateur, ou lorsque j’arrive pour la première fois sur mon site, mais lors des chargements de pages suivants, la fonction ne déclenche pas ma publicité, elle ne détecte pas que ma page de sujet a changé.

Elle atterrit dans ce bloc else à chaque fois. Y a-t-il un bug dans la logique de mon plugin Discourse personnalisé pour détecter quand un utilisateur navigue vers une page de sujet ? Je veux afficher et recharger une nouvelle publicité AdSense à chaque fois, mais elle va dans le bloc else ; le code pense que l’ID #friends existe déjà, mais il n’est jamais rechargé sauf si je fais un RECHARGEMENT COMPLET ET DUR. Délai dépassé, abandonné.

S’il vous plaît, aidez-moi. Vous pouvez parcourir vous-même les sujets de mon site, vous trouverez tous les problèmes dans la console JS. Je reçois également cet avertissement dans la console JS et la publicité Google Vignette ne reste jamais assez longtemps pour que l’utilisateur puisse cliquer dessus.

Avis de dépréciation : La suppression de tous les écouteurs d'événements en une seule fois est dépréciée ; veuillez supprimer chaque écouteur individuellement.

J’ai désactivé mes optimisations de vitesse CF conformément à vos suggestions : minifications CSS/JS/HTML, Rocket Loader, Brotli. Quoi d’autre pourrait être le problème ? Un plugin Discourse pourrait-il être en cause ? Voici mes plugins pour le moment :

Mon SSL est strict, cela pourrait-il être le problème ?

Je viens de faire une reconstruction fraîche également, au cas où des changements se produiraient après la reconstruction… mais les erreurs sont toujours les mêmes, j’ai testé à nouveau :frowning:

2 « J'aime »