如何在我的网站上禁用或隐藏所需的Disqus广告?

时间:2018-03-06 13:27:52

标签: javascript comments ads disqus

  

想象一下,有一天,突然间,随机广告开始出现在您的网站上......

Recently Disqus started forcing unwanted ads inside of the Disqus comments,在您不知情的情况下在您的网站上展示那些讨厌的广告。看起来他们只针对那些足够大的网站"每日流量或使用其他一些任意标准,因此广告不会出现在所有网站上,只会出现在相对繁忙的网站上。

这样,强迫"强迫"您要升级到付费订阅计划 - 对于付费用户,这些广告会成为可选项(即您可以在Disqus管理员面板中停用它们)。

如果您不想付款该怎么办?如何停用这些广告? 对此有一个简单,快速解决的解决方案吗?

至少在我们有时间切换到另一个评论系统之前。

6 个答案:

答案 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
<块引用>

如果您有任何其他疑问,请告诉我?

谢谢。