Annunci Adsense non si ricaricano nelle navigazioni per argomento o nelle pagine ToC, errori CSP su frame-src refused ed errori di eccezione non gestita EmberJS

Sto avendo un sacco di problemi con la pubblicazione di annunci sul sito Discourse all’indirizzo https://howtodiscuss.com.

  1. Molti errori non intercettati di tipo DOM Exception: basta andare su qualsiasi pagina di argomento in modalità incognito e li vedrete. https://howtodiscuss.com/t/profit/7022

  1. Un altro errore si verifica quando navigo da una pagina di argomento precedente a una nuova: appare questo avviso nella console. Viene mostrato un annuncio Google Vignette, ma a causa di questo avviso l’annuncio scompare e la pagina cambia, quindi l’utente non riesce mai a cliccare sugli annunci Google Vignette Interstitial che appaiono tra i caricamenti/navigazioni delle pagine.

    Avviso di deprecazione: la rimozione simultanea di tutti i listener di eventi è deprecata; rimuovete ciascun listener individualmente. How many ounces is a 1 4 cup - How To Discuss

  1. Sto anche cercando di mostrare un annuncio Google fisso e aderente nella barra laterale destra di una singola pagina di argomento, utilizzando questo codice,

Codice JavaScript per inserire un annuncio fisso aderente nella barra laterale degli argomenti: è necessario farlo funzionare anche con la ToC (Indice dei contenuti)

<!-- codice del plugin per mostrare un annuncio fisso -->

<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('pagina cambiata - argomento');
		friends_retries = 0;
		window.setTimeout(loadFriends, 100);

	} else {
		//console.log( 'pagina cambiata - non argomento');
	}
});

function loadFriends() {

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

			console.log('timeout cancellato, ho rinunciato');
			// loadFriends();
		}
	} else {


		var bHTML = ' <!-- Barra laterale degli argomenti 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="Ragazza con giacca">';

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


	}
}


</script>
<!-- codice del plugin per mostrare un annuncio fisso -->

Ecco il suo codice CSS:

/*per annuncio fisso*/
/* correzione layout 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;
}
/*per annuncio fisso*/

A volte questo codice funziona, ma non funziona sulla pagina in cui appare la ToC, ad esempio non funziona su How Many Grams In A Quarter Ounce? - How To Discuss

Qualcuno può correggere il mio errore nel codice in modo che funzioni anche sulle pagine con la ToC?

  1. Ho notato anche un altro bug nel mio codice e nel codice generale del plugin annunci di Discourse: quando navigo da una pagina all’altra, il mio codice annuncio AdSense non viene mai aggiornato né ricaricato, quindi non viene attivata alcuna impressione pubblicitaria. Forse perché Discourse non ricarica completamente l’intera pagina durante la navigazione. Voglio che gli annunci vengano aggiornati e che la pagina venga ricaricata completamente da qualsiasi navigazione tramite link; come posso risolvere questo problema?

  2. Sto anche ricevendo molti errori frame-src sul mio sito, https://howtodiscuss.com/t/how-mouthwash-rinse-become-a-necessary-step-in-oral-hygiene/30631

Il frame 'https://pagead2.googlesyndication.com/' è stato rifiutato perché viola la seguente direttiva Content Security Policy: "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".

Ecco come appaiono le mie impostazioni CSP,

Ma non so come whitelistare le richieste iframe di Google Ads. Ho anche provato questo codice, ma non funziona bene; vedo ancora gli errori frame-src sopra riportati. Se aggiungo valori accanto a frame-src nel meta, ricevo un errore che dice che non è possibile utilizzare frame-src nel tag 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'" /> -->

Sarebbe di grande aiuto se qualcuno potesse aiutarmi a risolvere i miei problemi,

Sto ricevendo anche questi errori sulla mia home page, https://howtodiscuss.com/ (per replicare gli errori, apri la pagina in incognito, usa una VPN o semplicemente aggiornala alcune volte o naviga su altre pagine; troverai gli errori nella console JS e vedrai anche l’annuncio Google Vignette scomparire senza dare all’utente la possibilità di cliccare sull’annuncio)

Spero che qualcuno possa aiutarmi.

Il mio sito è su Cloudflare, sto usando l’ultima versione di Discourse 2.6.0.beta6, ho aggiornato tutti i plugin e ho appena ricostruito Docker. Tuttavia, vedo ancora questi errori.

È possibile che questo sia la causa dei problemi che stai riscontrando. Dai un’occhiata ad alcuni argomenti di supporto relativi a Cloudflare per vedere se offrono indicazioni su configurazioni di Cloudflare che potrebbero essere all’origine dei problemi: Search results for 'cloudflare #support' - Discourse Meta.

Ho capito che è necessario assicurarsi che le ottimizzazioni di velocità e prestazioni di Cloudflare per JavaScript, CSS e HTML siano disattivate affinché funzioni correttamente con Discourse.

3 Mi Piace

Grazie @simon per la tua pronta risposta.

Come da tuo consiglio, ho disattivato Cloudflare, Brotli e ho disattivato tutte le sue minificazioni per CSS, JS e HTML; ho anche disattivato Rocket Loader.

Ho inoltre svuotato la cache di CF e ho atteso 30 minuti per testare i risultati, ma continuo a ricevere strani errori nella console JS quando sono sulla mia homepage https://howtodiscuss.com e

quando navigo verso le pagine dei topic, Catholic rosary - How To Discuss

Puoi replicare questi errori aprendo il mio sito nel browser in incognito di Chrome e provando a navigare tra alcune pagine/topic del mio sito.

Inoltre, sai perché il mio annuncio AdSense fisso e “sticky” sul lato destro della timeline del topic/navigazione del topic appare solo quando ricarico completamente la pagina usando l’icona di aggiornamento del browser, o quando atterro per la prima volta sul mio sito, ma su tutti i caricamenti successivi la funzione non attiva il mio annuncio: non rileva che la pagina del topic è cambiata.

Entra sempre in questo blocco else, c’è qualche bug nella logica del mio plugin Discourse personalizzato per rilevare quando un utente naviga su una pagina del topic? Voglio mostrare e ricaricare un nuovo annuncio AdSense ogni volta, ma finisce nel blocco else: il codice pensa che l’ID #friends esista già, ma non viene mai ricaricato a meno che non faccia un RIPRISTINO COMPLETO (FULL HARD REFRESH). Timeout scaduto, ho desistito.

Per favore aiutami, puoi navigare tu stesso tra i topic del mio sito; troverai tutti gli errori nella console JS. Sto ricevendo anche questo avviso nella console JS e l’annuncio vignetta di Google non rimane mai abbastanza a lungo per essere cliccato dall’utente.

Avviso di deprecazione: la rimozione di tutti gli ascoltatori di eventi in una volta sola è deprecata, si prega di rimuovere ogni listener individualmente.

Ho disattivato le ottimizzazioni di velocità di CF come suggerito, le minificazioni di CSS/JS/HTML, Rocket Loader e Brotli. Cosa potrebbe essere il problema ora? Un plugin Discourse potrebbe essere la causa? Questi sono i miei plugin al momento,

Il mio SSL è impostato su “strict”, potrebbe essere questo il problema?

Ho appena eseguito anche una ricostruzione completa, nel caso in cui le modifiche avessero effetto dopo il rebuild… ma gli errori sono sempre gli stessi, ho appena testato di nuovo :frowning:

2 Mi Piace