当Recaptcha加载到页面上时突然开始窃取焦点,导致页面向下滚动到表单(非常烦人)。这似乎是一个新的错误?
参见示例:http://www.gullixson.com/Contact-Us
显然,加载reCaptcha的主要Google图书馆 http://www.google.com/recaptcha/api/challenge?k=UNIQUEAPIKEY&lang=en 要求http://www.google.com/recaptcha/api/js/recaptcha_canary.js
在那里,init()函数似乎触发reload()函数,这导致Recaptcha.focus_response_field()函数加载。
似乎我们无能为力......直到他们修复它?
有谁知道如何向Google报告此错误?或者解决这个问题的方法?
答案 0 :(得分:6)
最简单的解决方法是在重新加载JS后重新定义Recaptcha.focus_response_field
。
// Load recaptcha JS
// ...
Recaptcha.focus_response_field = function(){return false;};
这使焦点操作基本上变成了非操作。
编辑:测试并使用Chrome,Firefox和IE9
答案 1 :(得分:1)
我用一点jQuery修复代码解决了这个问题:
$(document).ready(function() {
$(window).focus(function(){
/* If on load is detected a div to show reCaptcha code
('div#captcha') simply force the focus to the top of the page.
*/
if( $('body').has('div#captcha') ){
$('html,body').animate({scrollTop:0}, 1000, 'swing');
}
});
});
答案 2 :(得分:1)
使用jQuery快速解决方法:
<style>
#recaptcha_widget_div{
display: none;
}
</style>
...existing recaptcha code here...
<script>
$("body").on("focus", "input, textarea", function() {
$("#recaptcha_widget_div").show();
});
</script>
答案 3 :(得分:1)
昨天我遇到了同样的问题。
今天,我再次检查,似乎谷歌已经解决了这个问题。
您不再需要使用jQuery来应用任何黑客攻击。
答案 4 :(得分:0)
尝试评论Recaptcha.focus_response_field
:
Recaptcha.create("your_public_key", element, {
theme: "red",
callback: Recaptcha.focus_response_field // <-- Comment this line
});