제가 관리하는 WordPress 웹 사이트 중 하나에서이 문제가 발생했기 때문에 이것은 제가 사용했던 해결 방법이었습니다. 그것은 onload 콜백을 사용하는 것으로 보이는 점에서 Rodrigo 's와 유사합니다. . 그러나 대신에() 오프셋 (offset) $ (요소)에 스크롤의 최고, 내가 대신 스크롤 이벤트를 본 다음 reCAPTCHA를 컨테이너가보기에 스크롤 일단, 나는 윈도우의 pageYOffset의 메모를 대신했다 그 대신에
<script type="text/javascript">
window.reCaptchaPos = false;
function attachEvent(element, event, callbackFunction) {
if (element.addEventListener) {
element.addEventListener(event, callbackFunction, false);
} else if (element.attachEvent) {
element.attachEvent('on' + event, callbackFunction);
}
};
function isScrolledIntoView(el) {
var theTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
var elemTop = el.getBoundingClientRect().top;
var elemBottom = el.getBoundingClientRect().bottom;
var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);
if(isVisible) { window.reCaptchaPos = theTop; }
return isVisible;
}
window.onscroll = function() { isScrolledIntoView(document.getElementById('reCaptcha_')); };
focusWhatever = function (response) {
if(window.reCaptchaPos) { $("html, body").scrollTop(window.reCaptchaPos); }
};
</script>
로 스크롤
이 접근법은 iOS 기기의 뷰포트에서 reCAPTCHA의 수직 중심을 더 잘 맞 춥니 다.