@Hayrat

Как подгрузить ReCaptcha V2 при открытии определенного Modal-окна?

Доброго времени суток!

Нужна помощь в непростом для меня деле, но простом для тех, кто разбирается в JavaScript и Bootstrap.
Установил на сайт ReCaptcha V2 от Google. Все капчи - их 5, находятся в модальных окнах. Подгружаются они через bootstrap.js по таймеру. Естественно, когда я открываю одно модальное окно, то начинается небольшое подвисание, ибо грузятся сразу все 5 капч.
В общем, нужно сделать так:

Если модальное окно имеет название "Captcha1", то загружаем только 'var captcha1=...'

И так далее для остальных. Надеюсь, объяснил понятно.

Код с капчей у меня вставлен вот так:
spoiler
Modal.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);		
  }
  • Вопрос задан
  • 764 просмотра
Решения вопроса 1
@Hayrat Автор вопроса
Нашел мануал. Задачу решил.

$('#Test').on('shown.bs.modal', function () {
		var captcha = grecaptcha.render('captcha', {
			'sitekey': 'mycode',
			'theme': 'dark'
		});		
	});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы