【问题标题】:How to hide the Google Invisible reCAPTCHA badge如何隐藏 Google Invisible reCAPTCHA 徽章
【发布时间】:2017-11-16 12:15:09
【问题描述】:

在实施新的 Google Invisible reCAPTCHA 时,默认情况下,您会在屏幕右下角看到一个小小的“受 reCAPTCHA 保护”徽章,当您滚动它时会弹出该徽章。

我想隐藏这个。

【问题讨论】:

    标签: javascript recaptcha


    【解决方案1】:

    data-badge 属性设置为inline

    <button type="submit" data-sitekey="your_site_key" data-callback="onSubmit" data-badge="inline" />
    

    并添加以下 CSS

    .grecaptcha-badge {
        display: none;
    }
    

    【讨论】:

    • 小心;这似乎禁用了垃圾邮件检查。
    • 这真的会禁用垃圾邮件检查吗?如果是这样,为什么所有的赞成票?
    • @Zade 也许改用 opacity: 0visibility: hidden ?你也有一个链接到它统计的地方吗?
    • 用户协议规定您必须按照@Yann39 上面所说的方式通知用户。
    • @Helenesh 值得单独回答吗?
    【解决方案2】:

    Google 现在允许从 FAQ 隐藏徽章:

    我想隐藏 reCAPTCHA 徽章。什么是允许的?

    只要您在用户流程中明显包含 reCAPTCHA 品牌,您就可以隐藏徽章。请包含以下文字:

    This site is protected by reCAPTCHA and the Google
        <a href="https://policies.google.com/privacy">Privacy Policy</a> and
        <a href="https://policies.google.com/terms">Terms of Service</a> apply.
    

    例如:

    因此您可以使用以下 CSS 简单地将其隐藏:

    .grecaptcha-badge { 
        visibility: hidden;
    }
    

    不要使用display: none;,因为它似乎会禁用垃圾邮件检查(感谢@Zade)

    【讨论】:

    • 接受它,或选择其他服务。 Google 有权要求您展示其免费服务的品牌。您甚至可以重新定位徽章,使其与developers.google.com/recaptcha/docs/invisible#render_param 表格内联。
    • 好吧,我只在我的联系人表单页面上使用这个验证码 v3。所以这是我希望这个徽章显示的唯一页面。它不适用于我网站上的其他地方。可能吗?
    • @AndrewTruckle 为什么不呢?
    • @Simon_Weaver 我现在明白系统会分析所有页面以判断是否是机器人。
    • @Yann39 - 请更新您的答案。可以隐藏它,例如将其添加到联系人页面:developers.google.com/recaptcha/docs/faq
    【解决方案3】:

    由于根据 TOU 隐藏徽章并不是真正合法的,并且现有的放置选项破坏了我的 UI 和/或 UX,因此我提出了以下自定义,它模仿了固定定位,但改为内联呈现:

    您只需要在您的徽章容器上应用一些 CSS:

    .badge-container {
      display: flex;
      justify-content: flex-end;
      overflow: hidden;
      width: 70px;
      height: 60px;
      margin: 0 auto;
      box-shadow: 0 0 4px #ddd;
      transition: linear 100ms width;
    }
    .badge-container:hover {
        width: 256px;
    }
    

    我认为你可以合法地推动它。

    【讨论】:

    • 不错。我使用transform: scale(0.6)opacity: 0.6 进一步推动了它(实际上没有完全隐藏它)
    • 您能否让蓝色横幅向右打开而不是向左打开?还要适应它的配色方案吗?
    • @VaishalPatel 在理论上是的,但有两个缺点:首先,Google 不鼓励篡改原生徽章设计;其次,您在更改中对现有设计的假设越多,就越脆弱您的解决方案变成了 - 请记住,Google 可以随时更改徽章样式和布局。
    • @krukid 我使用了他们默认的内联样式。
    • 这个答案已经过时了,看FAQ
    【解决方案4】:

    I saw next comment about this

    如果您想将自己的 CSS 应用到徽章上,将徽章内联放置也很有帮助。但请记住,您在注册 API 密钥时同意显示 Google 的条款和条件 - 所以请不要隐藏它。 虽然可以使用 CSS 使徽章完全消失,但我们不建议这样做。

    【讨论】:

      【解决方案5】:

      这不会禁用垃圾邮件检查

      div.g-recaptcha > div.grecaptcha-badge {
          width:0 !important;
      }
      

      【讨论】:

        【解决方案6】:

        我的解决方案是隐藏徽章,然后在用户关注表单输入时显示它 - 因此仍然遵守 Google 的 T&C。

        注意:我正在调整的 reCAPTCHA 是由 WordPress 插件生成的,因此您可能需要自己用 &lt;div class="inv-recaptcha-holder"&gt; ... &lt;/div&gt; 包装 reCAPTCHA。

        CSS

        .inv-recaptcha-holder {
          visibility: hidden;
          opacity: 0;
          transition: linear opacity 1s;
        }
        
        .inv-recaptcha-holder.show {
          visibility: visible;
          opacity: 1;
          transition: linear opacity 1s;
        }
        

        jQuery

        $(document).ready(function () {
          $('form input, form textarea').on( 'focus', function() {
            $('.inv-recaptcha-holder').addClass( 'show' );
          });
        });
        

        显然,如果需要,您可以更改 jQuery 选择器以针对特定表单。

        【讨论】:

          【解决方案7】:

          我决定在我的联系页面以外的所有页面上隐藏徽章(使用 Wordpress):

          /* Hides the reCAPTCHA on every page */
          .grecaptcha-badge {
              visibility: hidden !important;
          }
          
          /* Shows the reCAPTCHA on the Contact page */
          /* Obviously change the page number to your own */
          .page-id-17 .grecaptcha-badge {
              visibility: visible !important;
          }
          

          我不是网络开发人员,所以如果有问题请纠正我。

          编辑:更新为使用可见性而不是显示。

          【讨论】:

          • 这会起作用,但 page-id-# 是特定于您的网站的,因此任何使用它的人都需要调整 id 以适应他们想要执行显示的页面。 ||我看到有报道说这样做 display:none;也会禁用检查,但我现在不确定。
          • 小心!这将禁用垃圾邮件检查。查看我的答案以获取更多信息
          • 根据 Michael & Helenesh 的上述 cmets 更新
          【解决方案8】:

          对于 Google reCaptcha v3,FAQ 表示:

          只要包含 reCAPTCHA,您就可以隐藏徽章 品牌在用户流中可见。请包含以下文字:

          This site is protected by reCAPTCHA and the Google
              <a href="https://policies.google.com/privacy">Privacy Policy</a> and
              <a href="https://policies.google.com/terms">Terms of Service</a> apply.
          

          例如:

          注意:如果您选择隐藏徽章,请使用

          .grecaptcha-badge { visibility: hidden; }
          

          尚不清楚它是否适用于 reCaptcha v2。我建议升级到 v3,因为它为您的访问者提供了更好的体验。

          【讨论】:

          • 仅适用于 v3! v2 仍然需要显示徽章。 :(
          • @ADTC 这仍然适用吗?酱汁?
          • @user13160957 我更新了答案。它仍然适用于 v3。
          • @ADTC 我不明白为什么这只适用于 v3。能否请您提供您的信息来源的参考?
          • @RenéSchubert 正如我所提到的:“尚不清楚它是否适用于 reCaptcha v2。” 再次查看链接的常见问题解答,您似乎应该能够在不违反条款的情况下也在 v2 中执行此操作。 只有谷歌才能肯定回答这个问题!
          【解决方案9】:

          对于 Wordpress 上 Contact Form 7 的用户,此方法对我有用: 我在所有页面上都隐藏了 v3 Recaptcha,除了带有 Contact 7 Forms 的页面。

          但是这种方法应该适用于您使用唯一类选择器的任何站点,该选择器可以识别具有文本输入表单元素的所有页面。

          首先,我在 CSS 中添加了一个可以折叠磁贴的目标样式规则:

          CSS

           div.grecaptcha-badge.hide{
              width:0 !important;
          }
          

          然后我在标题中添加了 JQuery 脚本以在窗口加载后触发,因此“grecaptcha-badge”类选择器可用于 JQuery,并且可以添加“隐藏”类以应用可用的 CSS 样式。

          $(window).load(function () { 
              if(!($('.wpcf7').length)){ 
                $('.grecaptcha-badge').addClass( 'hide' );
                 }
          });
          

          我的磁贴仍然会在每一页上闪烁半秒,但这是我迄今为止发现的最好的解决方法,我希望能遵守。改进建议表示赞赏。

          【讨论】:

            【解决方案10】:

            如果您使用的是 Contact Form 7 更新和最新版本(版本 5.1.x),则需要安装、设置 Google reCAPTCHA v3 才能使用。

            默认情况下,您会在屏幕右下角的每个页面上显示 Google reCAPTCHA 徽标。根据我们的评估,这正在为用户创造糟糕的体验。而且您的网站、博客会变慢一点(由 PageSpeed 分数反映),您的网站将不得不从 Google 加载额外的 1 个 JavaScript 库才能显示此徽章。

            您可以按照以下步骤从 CF7 中隐藏 Google reCAPTCHA v3(仅在必要时显示):

            首先,您打开主题的 functions.php 文件(使用文件管理器或 FTP 客户端)。该文件位于:/wp-content/themes/your-theme/ 并添加以下 sn-p(我们正在使用此代码删除每个页面上的 reCAPTCHA 框):

                remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts' );
            

            接下来,您将在您希望它显示 Google reCAPTCHA 的页面中添加这个 sn-p(联系页面、登录、注册页面……):

            if ( function_exists( 'wpcf7_enqueue_scripts' ) ) {
                add_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 10, 0 );
            }
            

            请参阅 OIW 博客 - 如何从 WordPress 的联系表 7 中删除 Google reCAPTCHA 徽标(隐藏 reCAPTCHA 徽章)

            【讨论】:

              【解决方案11】:

              Matthew Dowell 帖子的一个轻微变体,它避免了短暂的闪烁,但只要可见联系表格 7 表格就会显示:

              div.grecaptcha-badge{
                  width:0 !important;
              }
              
              div.grecaptcha-badge.show{
                  width:256px !important; 
              }
              

              然后我在我的子主题的 header.php 中添加了以下内容:

              <script>
              jQuery( window ).load(function () { 
                  if( jQuery( '.wpcf7' ).length ){ 
                      jQuery( '.grecaptcha-badge' ).addClass( 'show' );
                  }
              });
              </script>
              

              【讨论】:

                【解决方案12】:

                我已经测试了所有方法并且:

                警告: display: none 禁用垃圾邮件检查!

                visibility: hiddenopacity: 0 不要禁用垃圾邮件检查。

                使用代码:

                .grecaptcha-badge { 
                    visibility: hidden;
                }
                

                当您隐藏徽章图标时,Google 希望您通过添加以下内容在您的表单上 reference 他们的服务:

                <small>This site is protected by reCAPTCHA and the Google 
                    <a href="https://policies.google.com/privacy">Privacy Policy</a> and
                    <a href="https://policies.google.com/terms">Terms of Service</a> apply.
                </small>
                

                【讨论】:

                • 这个答案需要更高!它以简洁的方式包含解决方案的所有必要信息。
                • 正是我想要的,这很好用。此外,对于任何寻找允许证明的人,请检查此页面(如果您还没有在这个 SO 线程中看到它)developers.google.com/recaptcha/docs/faq
                • 感谢您提到这个@Jake。我已将此添加到我的答案中。
                • 有没有人发现隐藏徽章而不是 css hack 的记录方法? Google 提供了一种显示其品牌的替代方式,但我找不到隐藏其徽章的受支持方法。
                【解决方案13】:

                Recaptcha 联系表格 7 和 Recaptcha v3 解决方案。

                body:not(.page-id-20) .grecaptcha-badge {
                    display: none;
                }
                

                不止一个联系表单页面?

                body:not(.page-id-12):not(.page-id-43) .grecaptcha-badge {
                    display: none;
                }
                

                如果您有更多联系表单页面,您可以添加更多“不”。

                body:not(.page-id-45):not(.page-id-78):not(.page-id-98) .grecaptcha-badge {
                    display: none;
                }
                

                确保你的身体部分是这样的:

                <body>
                

                将其更改为如下所示:

                 <body <?php body_class(); ?>>
                

                【讨论】:

                • 请其他答案,显示无禁用垃圾邮件检查。
                • @Helenesh 什么是垃圾邮件检查以及它与添加 CSS 样式有何关系?
                【解决方案14】:

                注意:如果您选择隐藏徽章,请使用
                .grecaptcha-badge { visibility: hidden; }

                只要您在用户流程中明显包含 reCAPTCHA 品牌,您就可以隐藏徽章。请包含以下文字:

                本网站受 reCAPTCHA 和 Google
                <a href="https://policies.google.com/privacy">Privacy Policy</a> and <a href="https://policies.google.com/terms">Terms of Service</a> apply.

                保护

                更多详情在这里reCaptacha

                【讨论】:

                • 这应该是更新/正确的答案。 display: none 本身会禁用垃圾邮件检查,如果您不输入文本 This site is protected...
                【解决方案15】:

                是的,你可以做到。您可以使用 cssjavascript 来隐藏 reCaptcha v3 徽章。

                1. CSS 方式 使用display: nonevisibility: hidden 隐藏reCaptcha 批次。简单快捷。
                .grecaptcha-badge {
                    display:none !important;
                }
                
                1. Javascript 方式
                var el = document.querySelector('.grecaptcha-badge');
                el.style.display = 'none';
                

                隐藏徽章是有效的,根据谷歌政策并在常见问题解答here 中回答。建议显示谷歌的隐私政策和使用条款,如下所示。

                【讨论】:

                • '不是 querySelect' 而是 'querySelector'。
                • display: none 禁用垃圾邮件检查!
                猜你喜欢
                • 1970-01-01
                • 2022-06-21
                • 1970-01-01
                • 2017-08-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-11-11
                相关资源
                最近更新 更多