Anúncios do Adsense não recarregam em navegações de tópicos ou páginas de ToC, erros de `frame-src` refused CSP e erros de exceção não capturada EmberJS

Estou tendo vários problemas ao executar anúncios no site Discourse em https://howtodiscuss.com.

  1. Muitos erros de exceção DOM não capturados; basta acessar qualquer página de tópico no modo anônimo e você os verá: https://howtodiscuss.com/t/profit/7022

  1. Outro erro ocorre quando navego de um tópico antigo para um novo: aparece um aviso no console. Um anúncio Google Vignette é exibido, mas devido a esse aviso, o anúncio desaparece e a página navega; assim, o usuário nunca consegue clicar nos anúncios Google Vignette Interstitial que aparecem entre carregamentos/navegações de página.

    Aviso de depreciação: Remover todos os ouvintes de evento de uma vez está obsoleto; remova cada ouvinte individualmente. How many ounces is a 1 4 cup - How To Discuss

  1. Também estou tentando exibir um anúncio fixo e persistente do Google na barra lateral direita de uma página de tópico único, usando este código:

Código JavaScript para inserir anúncio fixo e persistente na barra lateral do tópico; preciso fazê-lo funcionar também com a ToC

<!-- código do plugin para mostrar anúncio fixo -->

<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('página alterada - tópico');
		friends_retries = 0;
		window.setTimeout(loadFriends, 100);

	} else {
		//console.log( 'página alterada - não é tópico');
	}
});

function loadFriends() {

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

			console.log('tempo limite limpo, desisti');
			// loadFriends();
		}
	} else {


		var bHTML = ' <!-- Barra lateral do tópico 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>
<!-- código do plugin para mostrar anúncio fixo -->

Aqui está o código CSS correspondente:

/* para anúncio fixo */
/* correção de layout da 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;
}
/* para anúncio fixo */

Às vezes esse código funciona, mas não funciona na página onde a ToC aparece, por exemplo, não funciona em How Many Grams In A Quarter Ounce? - How To Discuss

Alguém pode corrigir meu erro no código para que ele também funcione nas páginas com ToC?

  1. Também notei outro bug no meu código e no código geral do plugin de anúncios do Discourse: ao navegar de uma página para outra, meu código de anúncio do AdSense nunca é atualizado nem recarregado, portanto, não dispara nenhuma impressão de anúncio. Talvez porque o Discourse não recarregue completamente a página inteira ao navegar. Quero que os anúncios sejam atualizados e que a página completa seja recarregada em qualquer navegação por link; como posso corrigir isso?

  2. Estou recebendo muitos erros de frame-src no meu site: https://howtodiscuss.com/t/how-mouthwash-rinse-become-a-necessary-step-in-oral-hygiene/30631

A navegação para 'https://pagead2.googlesyndication.com/' foi bloqueada porque viola a seguinte diretiva de Política de Segurança de Conteúdo: "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".

Assim é como minhas configurações de CSP aparecem:

Mas não sei como colocar na lista de permissões as solicitações de iframe do Google Ads. Também tentei este código, mas não funcionou bem; ainda vejo os erros de frame-src acima. Se adiciono valores ao lado de frame-src na meta, recebo o erro de que não podemos usar frame-src na 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'" /> -->

Seria de grande ajuda se alguém pudesse me ajudar a resolver meus problemas:

Estou recebendo até mesmo esses erros na minha página inicial: https://howtodiscuss.com/ (para replicar os erros, abra a página em modo anônimo, use uma VPN ou apenas atualize algumas vezes ou navegue para outras páginas; você encontrará os erros no console JS e também verá o Google Vignette sendo descartado sem dar chance ao usuário de clicar no anúncio)

Espero que alguém possa ajudar.

Meu site está no Cloudflare; estou na versão mais recente do Discourse 2.6.0.beta6, atualizei todos os plugins e também reconstruí o Docker agora mesmo. Ainda assim, vejo esses erros.

É possível que isso seja a causa dos problemas que você está enfrentando. Dê uma olhada em alguns tópicos de suporte relacionados ao Cloudflare para ver se algum deles oferece dicas sobre configurações do Cloudflare que possam estar causando os problemas: Search results for 'cloudflare #support' - Discourse Meta.

Entendo que você precisa garantir que as otimizações de velocidade/desempenho do Cloudflare para JavaScript, CSS e HTML estejam desativadas para que funcione corretamente com o Discourse.

3 curtidas

Obrigado @simon pela sua rápida resposta.

Conforme seu conselho, desativei o Cloudflare, o Brotli e desativei todas as minificações em CSS, JS e HTML. Também desativei o Rocket Loader.

Também limpei o cache do CF e esperei 30 minutos para testar os resultados, mas ainda estou recebendo erros estranhos no console do JS quando estou na minha página inicial https://howtodiscuss.com e

quando estou navegando pelas minhas páginas de tópicos, Catholic rosary - How To Discuss

Você pode replicar esses erros abrindo meu site no navegador anônimo do Chrome e tentando navegar por algumas páginas/tópicos no meu site.

Além disso, você sabe por que meu anúncio fixo do AdSense na barra lateral direita da linha do tempo do tópico/navegação do tópico só aparece quando recarrego totalmente a página usando o ícone de atualizar do navegador ou quando entro no meu site pela primeira vez? Em qualquer carregamento subsequente de página, a função não dispara meu anúncio; ela não detecta que a página do tópico mudou.

Ele entra nesse bloco else toda vez. Há algum bug na lógica do meu plugin personalizado do Discourse para detectar quando um usuário navegou para uma página de tópico? Quero mostrar e recarregar um novo anúncio do AdSense toda vez, mas ele está indo para o bloco else. O código acha que o ID #friends já existe, mas ele nunca é recarregado a menos que eu faça um RECARREGAMENTO COMPLETO E FORÇADO. Tempo esgotado, desisti.

Por favor, ajude-me. Você pode navegar pelos tópicos do meu site; você encontrará todos os problemas no console JS. Também estou recebendo este aviso no console do JS e o anúncio de vignette do Google nunca fica para o usuário clicar.

Aviso de obsolescência: Remover todos os ouvintes de eventos de uma vez é obsoleto; por favor, remova cada ouvinte individualmente.

Desativei as otimizações de velocidade do CF conforme suas sugestões: minificações de CSS/JS/HTML, Rocket Loader e Brotli. O que mais poderia ser o problema agora? Um plugin do Discourse poderia ser o problema? Estes são os meus plugins atualmente:

Meu SSL está estrito. Isso poderia ser o problema?

Acabei de fazer uma reconstrução completa também, caso haja mudanças após a reconstrução… mas os erros continuam os mesmos. Acabei de testar novamente :frowning:

2 curtidas