Доброго времени суток!
Нужна помощь в непростом для меня деле, но простом для тех, кто разбирается в JavaScript и Bootstrap.
Установил на сайт ReCaptcha V2 от Google. Все капчи - их 5, находятся в модальных окнах. Подгружаются они через bootstrap.js по таймеру. Естественно, когда я открываю одно модальное окно, то начинается небольшое подвисание, ибо грузятся сразу все 5 капч.
В общем, нужно сделать так:
Если модальное окно имеет название "Captcha1", то загружаем только 'var captcha1=...'
И так далее для остальных. Надеюсь, объяснил понятно.
Код с капчей у меня вставлен вот так:
spoilerModal.prototype.show = function (_relatedTarget) {
var that = this
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
this.isShown = true
this.checkScrollbar()
this.$body.addClass('modal-open')
this.setScrollbar()
this.escape()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus()
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$element.find('.modal-dialog') // wait for modal to slide in
.one('bsTransitionEnd', function () {
that.$element.trigger('focus').trigger(e)
})
.emulateTransitionEnd(300) :
that.$element.trigger('focus').trigger(e)
})
setTimeout(function(){
var captcha1 = grecaptcha.render('captcha1ID', {
'sitekey': 'code',
'theme': 'dark'
});
var captcha2 = grecaptcha.render('captcha2ID', {
'sitekey': 'code',
'theme': 'dark'
});
var captcha3 = grecaptcha.render('captcha3ID', {
'sitekey': 'code',
'theme': 'dark'
});
var captcha4 = grecaptcha.render('captcha4ID', {
'sitekey': 'code',
'theme': 'dark'
});
var captcha5 = grecaptcha.render('captcha5ID', {
'sitekey': 'code',
'theme': 'dark'
});
} , 1300);
}