Discourse サイト (https://howtodiscuss.com) で広告を表示させる際に、多数の問題に直面しています。
- 多くの捕捉されていない DOM 例外エラーが発生しています。シークレットモードで任意のトピックページに移動すると確認できます: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 コードは以下の通りです:
/*固定広告用*/
/* 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;
}
/*固定広告用*/
このコードは時々機能しますが、ToC(目次)が表示されるページでは機能しません。例えば、以下のページでは動作しません:How Many Grams In A Quarter Ounce? - How To Discuss
ToC ページでも表示されるように、私のコードの誤りを修正していただけないでしょうか?
-
また、コード全体および 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(コンテンツセキュリティポリシー)設定は以下のようになっています。
しかし、Google 広告の iframe リクエストをホワイトリストに追加する方法がわかりません。また、以下のコードを試しましたが、うまく動作せず、上記の frame-src エラーが依然として表示されています。
meta タグの frame-src の次に値を追加すると、「meta タグでは 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 も再構築しました。しかし、依然としてこれらのエラーが表示されます。


















