У меня возникло множество проблем с показом рекламы на сайте Discourse по адресу https://howtodiscuss.com.
- Множество необработанных ошибок DOM Exception. Просто перейдите на любую страницу темы в режиме инкогнито, и вы их увидите: https://howtodiscuss.com/t/profit/7022
-
Другая ошибка возникает при переходе с одной страницы темы на новую: в консоли появляется предупреждение, показывается реклама Google Vignette, но из-за этого предупреждения реклама исчезает, и происходит переход по странице. В результате пользователь никогда не может кликнуть по межстраничной рекламе Google Vignette, которая появляется между загрузками/переходами страниц.
Уведомление об устаревании: одновременное удаление всех слушателей событий устарело, пожалуйста, удаляйте каждый слушатель индивидуально. How many ounces is a 1 4 cup - How To Discuss
- Я также пытаюсь показать фиксированную «липкую» рекламу Google в правой боковой панели на странице отдельной темы, используя этот код,
JavaScript-код для вставки фиксированной липкой рекламы в боковую панель темы, необходимо заставить его работать вместе с оглавлением (ToC)
<!-- код плагина для показа фиксированной рекламы -->
<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>
<!-- код плагина для показа фиксированной рекламы -->
Вот его CSS-код:
/* для фиксированной рекламы */
/* исправление макета таймлайна 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;
}
/* для фиксированной рекламы */
Иногда этот код работает, но не работает на страницах, где отображается оглавление (ToC), например, не работает на How Many Grams In A Quarter Ounce? - How To Discuss
Может ли кто-нибудь исправить мою ошибку в коде, чтобы он показывался и на страницах с оглавлением?
-
Я также заметил ещё одну ошибку в своём коде и в целом в коде плагина рекламы Discourse: при переходе с одной страницы на другую мой код рекламы AdSense никогда не обновляется и не перезагружается, поэтому не срабатывает ни одно показ рекламы. Возможно, это связано с тем, что Discourse не полностью перезагружает всю страницу при навигации. Я хочу, чтобы реклама обновлялась, а полная страница перезагружалась при переходе по любой ссылке. Как это исправить?
-
На моём сайте также появляется множество ошибок 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 в мета-теге, мне выдаётся ошибка, что нельзя использовать frame-src в мета-теге.
<!--<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 или просто обновите страницу несколько раз или перейдите на другие страницы; вы найдёте ошибки в консоли JS и также увидите, как реклама Google Vignette исчезает, не давая пользователю возможности кликнуть по ней).
Надеюсь, кто-то сможет помочь.
Мой сайт находится на Cloudflare, я использую последнюю версию Discourse 2.6.0.beta6, обновил все плагины и только что пересобрал Docker. Несмотря на это, я всё ещё вижу эти ошибки.


















