想象一下,有一天,突然间,随机广告开始出现在您的网站上......
Recently Disqus started forcing unwanted ads inside of the Disqus comments,在您不知情的情况下在您的网站上展示那些讨厌的广告。看起来他们只针对那些足够大的网站"每日流量或使用其他一些任意标准,因此广告不会出现在所有网站上,只会出现在相对繁忙的网站上。
这样,强迫"强迫"您要升级到付费订阅计划 - 对于付费用户,这些广告会成为可选项(即您可以在Disqus管理员面板中停用它们)。
如果您不想付款该怎么办?如何停用这些广告? 对此有一个简单,快速解决的解决方案吗?
至少在我们有时间切换到另一个评论系统之前。
答案 0 :(得分:3)
自从提出这个问题以来,Disqus 已经随着时间的推移发生了变化。现在,在 2021 年,Disqus 使用 iframes
和无法区分的类名和 ID。我发现当它显示广告时,它会显示最少 3 个 iframe,第二个 iframe 是评论部分本身,第一个 iframe 和第二个之后的 iframe 是广告。 Disqus 的开发人员也很聪明,在初始加载时,Disqus 只加载 1 个 iframe,即评论部分本身,在一个小的 延迟 后约 0.5-1 秒它加载了广告.所以你不能再用普通的 CSS 删除它们,因为你的 CSS 通常会在 Disqus 广告加载之前加载,所以我们必须编写一个延迟函数,等待广告加载。然后删除。
这是我在 JQuery 中的代码示例,适用于不同站点:
const disqus = jQuery('#disqus_thread');
disqus.ready(function() {
setTimeout(function() {
if (disqus.children().length >= 3) {
const comments = disqus.find('iframe:nth-child(2)').detach();
disqus.empty().append(comments);
}
}, 2000);
});
我正在搜索 disqus_thread
id。然后函数等待 2s。通常 1.5 秒是 Disqus 广告加载所需的最长时间。所以 2s 是等待广告加载的安全位置。然后我检查 disqus div 有多少个子元素。如果小于 3,则表示 Disqus 没有加载广告,因此我们不必删除任何元素。但是如果有 3 个或更多的孩子,我们保存第二个孩子,即评论部分,然后删除 disqus div 中的所有元素,并重新添加评论部分。
这不是理想的解决方案。但到目前为止,它在多个网站上对我有用。
答案 1 :(得分:2)
截至撰写本文时,似乎流行的AdBlock浏览器扩展程序成功阻止了广告。但是,并非所有网站访问者都使用adblock。
这是一个基于jQuery的快速隐藏广告的解决方案:
{
"_id": "123",
"deal_amount": "5200",
"deal_date": "2018-03-05",
"deal_type": "New Business",
"account_name": "Sarah"
}, {
"_id": "885",
"deal_amount": "4070",
"deal_date": "2017-09-22",
"deal_type": "New Business",
"account_name": "Amber"
},
在jQuery加载后,只需在出现Disqus评论的每个页面上将其插入您的网站。该代码会定期检查您网站上是否存在Disqus广告并删除其容器。你知道,万一他们会试图重新出现。
答案 2 :(得分:1)
您可以使用CSS隐藏广告iframe(请注意@DanielGale所说的是正确的-这将是猫和老鼠的游戏,您的CSS选择器必须适应):
iframe[src*="ads-iframe"] { display: none; }
答案 3 :(得分:1)
您可以为WordPress网站安装此插件:https://wordpress.org/plugins/remove-disqus-ads/
答案 4 :(得分:0)
您可以使用普通javascript
document.addEventListener('DOMContentLoaded', function () {
let disqus = document.getElementById('disqus_thread');
let remove_ads = setInterval(() => {
let iframes = document.getElementsByTagName('iframe');
for (var iframe in iframes) {
if (typeof iframes[iframe].src === 'undefined') {
continue;
}
if (iframes[iframe].src.match(/(ads-iframe)|(disqusads)/gi)) {
iframes[iframe].style.display = 'none';
disqus.style.width = '100%';
}
}
}, 500);
setTimeout(function () {
clearInterval(remove_ads);
}, 5000);
});
答案 5 :(得分:0)
用于禁用Disqus部分中“赞助”标签的广告
您的问题将通过这个插件解决:
https://github.com/Muneebkh2/ads-disabler-disqus
<块引用>
如果您有任何其他疑问,请告诉我?
谢谢。