Я использую jCaptcha.js для генерации капчи для моего приложения. Он отлично работает в первый раз, как только я закончу с регистрацией и выходом из системы и попытаюсь зарегистрировать новый аккаунт. холст не печатает ничего, что он показывает пустым, и из-за этого он зацикливается, потому что я установил проверку, чтобы убедиться, что он пустой.
if ($('.jCaptchaText')[0].toDataURL() != $('#blankCaptcha')[0].toDataURL())
isCaptchaBlank = false;
jCaptcha.js
! function(t, a) {
"function" == typeof define && define.amd ? define([], function() {
return t.jCaptcha = a()
}) : "object" == typeof module && module.exports ? module.exports = a() : t.jCaptcha = a()
}(this, function() {
var t = function(t, a) {
return "function" != typeof NodeList.prototype.forEach && (NodeList.prototype.forEach = Array.prototype.forEach), Object.keys(a).forEach(function(e) {
t[e] = a[e]
}), t
},
a = function() {
n = Math.round(8 * Math.random()) + 1, c = Math.round(8 * Math.random()) + 1, i = n + c
},
e = function(t, a, e) {
!e && t[0].insertAdjacentHTML("beforebegin", '<canvas class="jCaptchaText"></canvas>'), this.$captchaText = this.$captchaText || document.getElementsByClassName("jCaptchaText"), this.$jCaptchaTextContext = this.$jCaptchaTextContext || this.$captchaText[0].getContext("2d"), this.$captchaText[0].width = a.canvasWidth, this.$captchaText[0].height = a.canvasHeight, this.$jCaptchaTextContext.textBaseline = "top", this.$jCaptchaTextContext.font = a.canvasFontSize + " " + a.canvasFontFamily, this.$jCaptchaTextContext.textAlign = "left", this.$jCaptchaTextContext.fillStyle = a.canvasFillStyle, this.$jCaptchaTextContext.fillText(n + " + " + c + " " + a.requiredValue, 0, 0)
},
i = void 0,
n = void 0,
c = void 0,
o = function(a) {
this.options = a ? t(this.options, a) : this.options, this.init()
};
return o.prototype = {
options: {
el: "jCaptcha",
requiredValue: "=",// vinaya20180820 - made required value text as "=". it was * originally.
resetOnError: !0,
focusOnError: !0,
clearOnSubmit: !0,
canvasWidth: 50,
canvasHeight: 15,
canvasFontSize: "15px",
canvasFontFamily: "Arial",
canvasFillStyle: "#fff",
callback: null
},
init: function() {
this.$captchaInput = document.getElementsByClassName(this.options.el), a(), e(this.$captchaInput, this.options)
},
validate: function() {
this.callbackReceived = this.callbackReceived || "function" == typeof this.options.callback, this.$captchaInput[0].value != i ? (this.callbackReceived && this.options.callback("error", this.$captchaInput), !0 === this.options.resetOnError && this.reset(), !0 === this.options.focusOnError && this.$captchaInput[0].focus(), !0 === this.options.clearOnSubmit && (this.$captchaInput[0].value = "")) : (this.callbackReceived && this.options.callback("success", this.$captchaInput), !0 === this.options.clearOnSubmit && (this.$captchaInput[0].value = ""))
},
reset: function() {
a(), e(this.$captchaInput, this.options, !0)
}
}, o
});