gpt4 book ai didi

javascript - 在 Backbone View 中呈现 reCAPTCHA v2.0 小部件

转载 作者:行者123 更新时间:2023-11-30 16:25:15 25 4
gpt4 key购买 nike

这是我的问题,我有一个显式加载 reCAPTCHA 脚本的 index.html 页面:

<script src="https://www.google.com/recaptcha/api.js?onload=loadCaptcha&render=explicit" async defer></script> 

我有一个包含 reCAPTCHA 容器元素 (div) 的模板:

<form id="payment-<%= model.Id %>" class="form" action="" method="POST">
...
<div class="captcha-container"></div> //not being used yet
</form>

我有一个主干 View ,它将模板注入(inject)到 index.thml 中:

'use strict';
var Backbone = require('Backbone');

var Validation = require('backbone-validation');
Backbone.Validation = Validation;
Backbone.$ = $;

module.exports = BaseView.extend({
events: {},
formView: null,
initialize: function (options) {
var loadCaptcha = function() {
window.alert('captcha is ready');
};
},
render: function () {
// renders view using my form template
}
});

此时我什至无法触发回调函数(loadCaptcha),我怀疑问题出在加载顺序上,加载索引页面并且在主干 View 之前发生“onload=loadCaptcha”事件被初始化。我试过从脚本标签中删除“async”属性,但没有成功。关于如何让它工作的任何想法?

最佳答案

我找到了解决方案,方法是直接从呈现它的 View 中拉入 recaptcha 脚本。希望这对将来的人有所帮助。

loadCaptcha: function() {
var self = this;
var getRecaptchaResponse = function(response) {
self.captchaResponse = response;
};

var renderCaptcha = function() {
self.captchaWidgetId = grecaptcha.render('recaptcha-container-' + self.model.get('Id'), {
sitekey : service.settings.recaptchaSiteKey,
callback: getRecaptchaResponse
});
};

window.renderCaptcha = renderCaptcha;

$.getScript('https://www.google.com/recaptcha/api.js?onload=renderCaptcha&render=explicit', function() {});
},

关于javascript - 在 Backbone View 中呈现 reCAPTCHA v2.0 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com