javascript - 如何调整 Invisible RECAPTCHA Image Select Pop Up Frame 的大小

标签 javascript jquery html css

我最近在我的网站上添加了 Google RECAPTCHA V2 INVISIBLE 版本。

我遇到的问题是屏幕上出现的弹出框很大。

现在.. 我不是在谈论“我不是机器人”框(我在网上找到的所有答案似乎都在谈论缩放这个灰色小框)。所以不是这个

so not this one

我说的是实际的图像选择弹出框,您必须在其中单击图像……这个。这傻事;

This silly thing

我遇到的问题并非特定于移动设备...它甚至在我的笔记本电脑上看起来都很大。

我找到的常见答案是 this one但这不会改变弹出图像选择窗口的大小。我玩过这个并尝试了各种组合但没有任何效果。

我在一个简单的表单字段上有这个不可见的 RECAPTCHA,供人们注册我们的电子通讯。我想先验证 HTML5 表单字段,然后在提交时调用 RECAPTCHA...

我在这里找到了很多脚本(感谢之前提交该答案的人),效果非常好。

所以,这是我的完整代码..

var renderGoogleInvisibleRecaptcha = function() {
  for (var i = 0; i < document.forms.length; ++i) {
    var form = document.forms[i];
    var holder = form.querySelector('.recaptcha-holder');
    if (null === holder) {
      continue;
    }

    (function(frm) {

      var holderId = grecaptcha.render(holder, {
        'sitekey': 'site key',
        'size': 'invisible',
        'badge': 'bottomright',
        'callback': function(recaptchaToken) {
          HTMLFormElement.prototype.submit.call(frm);
        }
      });

      frm.onsubmit = function(evt) {
        evt.preventDefault();
        grecaptcha.execute(holder);
      };

    })(form);
  }
};
<script src="https://www.google.com/recaptcha/api.js?onload=renderGoogleInvisibleRecaptcha&render=explicit" async defer></script>
<div class="news-container">
  <form action="../php_scripts/handler.php" method="post" enctype="multipart/form-data" autocomplete="off">

    <div class="news-title">
      Subscribe to our Monthly E-Newsletter
    </div>

    <div class="news-input">
      <div class="field-icon"><i class="fi-mail"></i></div>
      <input class="input" name="email" type="email" required="required" placeholder="Email Address" id="email" oninvalid="setCustomValidity('Please Enter A Valid Email Address')" onchange="try{setCustomValidity('')}catch(e){}" />
    </div>
    <div class="recaptcha-holder"></div>

    <div class="news-submit">
      <button id="submit" name="submit" type="submit" value="submit">Send</button>
    </div>
  </form>

我知道可以调整这个弹出窗口的大小,因为我在过去看到的网站有可爱的小弹出窗口供图像选择,我该怎么做?

最佳答案

这个问题的答案比我想象的要容易。特别感谢 Ramon 为我提供了导致答案的线索。

我在执行recaptcha 函数后立即在Java 中添加了一行代码

$('iframe').parent().css({ 'transform' : 'scale(0.77)', '-webkit-transform' : 'scale(0.77)' });

当 iframe 加载时,它会根据给定的参数进行缩放。这解决了我在使用 Image Select iframe 弹出窗口时遇到的视觉外观问题。我想这可以更进一步并用于为移动设备创建动态缩放,但 0.77 可以满足我的需要。

此解决方案的唯一缺点是,一旦调用了 execute recaptcha 函数,它将缩放页面上的每个 iframe。我试图找到一个只缩放 recaptcha iframe 的修复程序,但没有成功。

所以,这是最终的全功能 Java 代码。这将使用 HTML5 方法验证表单字段,然后调用现在可以按上述方式缩放的 recapcha。

<script type="text/javascript">
	var renderGoogleInvisibleRecaptcha = function() {
	for (var i = 0; i < document.forms.length; ++i) {
	var form = document.forms[i];
	var holder = form.querySelector('.recaptcha-holder');
	if (null === holder){
	continue;
	}

	(function(frm){

	var holderId = grecaptcha.render(holder,{
	'sitekey': 'Your Site Key',
	'size': 'invisible',
	'badge' : 'bottomright', // possible values: bottomright, bottomleft, inline
	'callback' : function (recaptchaToken) {
	HTMLFormElement.prototype.submit.call(frm);
	}
	});

	frm.onsubmit = function (evt){
	evt.preventDefault();
	grecaptcha.execute(holderId);
	$('iframe').parent().css({ 'transform' : 'scale(0.77)', '-webkit-transform' : 'scale(0.77)' });
	};

	})(form);
	}
	};
</script>

关于javascript - 如何调整 Invisible RECAPTCHA Image Select Pop Up Frame 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54106595/

相关文章:

javascript - 从 URL 解析 JSON 并在 JavaScript 中获取值

javascript - Highcharts -plotLines 不会渲染

javascript - 基于 ajax 的 jQuery 函数

使用 VoiceOver 时不调用 JavaScript 函数

jquery - stopPropagation 不适用于 chrome+live 方法

javascript - 无法将我的页面链接到 node.js 中的路由器

html - 如何在我的 CSS 库中正确定位图像?

javascript - 如何接待 child 的 child ?

javascript - 在 JavaScript 中定义随机化比率

javascript - 允许单选按钮仅被选中一次以选择其唯一值