สายไปงานปาร์ตี้ แต่บางทีทางออกของฉันอาจช่วยใครสักคนได้
ฉันไม่พบวิธีแก้ปัญหาใด ๆ ที่ใช้งานได้บนเว็บไซต์ที่ตอบสนองเมื่อวิวพอร์ตเปลี่ยนไปหรือเค้าโครงลื่น
ฉันจึงสร้างสคริปต์ jQuery สำหรับ django-cms ที่ปรับให้เข้ากับวิวพอร์ตที่เปลี่ยนแปลงแบบไดนามิก ฉันจะอัปเดตการตอบกลับนี้ทันทีที่ฉันต้องการตัวแปรที่ทันสมัยซึ่งเป็นแบบแยกส่วนมากกว่าและไม่มีการพึ่งพา jQuery
html
<div class="g-recaptcha" data-sitekey="{site_key}" data-size={size}>
</div>
css
.g-recaptcha { display: none; }
.g-recaptcha.g-recaptcha-initted {
display: block;
overflow: hidden;
}
.g-recaptcha.g-recaptcha-initted > * {
transform-origin: top left;
}
js
window.djangoReCaptcha = {
list: [],
setup: function() {
$('.g-recaptcha').each(function() {
var $container = $(this);
var config = $container.data();
djangoReCaptcha.init($container, config);
});
$(window).on('resize orientationchange', function() {
$(djangoReCaptcha.list).each(function(idx, el) {
djangoReCaptcha.resize.apply(null, el);
});
});
},
resize: function($container, captchaSize) {
scaleFactor = ($container.width() / captchaSize.w);
$container.find('> *').css({
transform: 'scale(' + scaleFactor + ')',
height: (captchaSize.h * scaleFactor) + 'px'
});
},
init: function($container, config) {
grecaptcha.render($container.get(0), config);
var captchaSize, scaleFactor;
var $iframe = $container.find('iframe').eq(0);
$iframe.on('load', function() {
$container.addClass('g-recaptcha-initted');
captchaSize = captchaSize || { w: $iframe.width() - 2, h: $iframe.height() };
djangoReCaptcha.resize($container, captchaSize);
djangoReCaptcha.list.push([$container, captchaSize]);
});
},
lateInit: function(config) {
var $container = $('.g-recaptcha.g-recaptcha-late').eq(0).removeClass('.g-recaptcha-late');
djangoReCaptcha.init($container, config);
}
};
window.djangoReCaptchaSetup = window.djangoReCaptcha.setup;