1var _noCaptchaFields=_noCaptchaFields || []; 2var _noCaptchaValidationExemptActions=_noCaptchaValidationExemptActions || []; 3 4function noCaptchaFieldRender() { 5 var submitListener=function(e) { 6 // If the action is exempt from validation, skip any recaptcha checks 7 if (e.submitter && 8 e.submitter.name && 9 _noCaptchaValidationExemptActions.indexOf(e.submitter.name.substring(7)) > -1) { 10 return; 11 } 12 13 e.preventDefault(); 14 var widgetID = e.target.querySelectorAll('.g-recaptcha')[0].getAttribute('data-widgetid'); 15 grecaptcha.execute(widgetID); 16 }; 17 18 var render = function(field) { 19 var options={ 20 'sitekey': field.getAttribute('data-sitekey'), 21 'theme': field.getAttribute('data-theme'), 22 'type': field.getAttribute('data-type'), 23 'size': field.getAttribute('data-size'), 24 'badge': field.getAttribute('data-badge'), 25 }; 26 27 //For the invisible captcha we need to setup some callback listeners 28 if(field.getAttribute('data-size')=='invisible' && field.getAttribute('data-callback')==null) { 29 var form=document.getElementById(field.getAttribute('data-form')); 30 var superHandler=false; 31 32 if(typeof jQuery!='undefined' && typeof jQuery.fn.validate!='undefined') { 33 var formValidator=jQuery(form).data('validator'); 34 if (!formValidator) { 35 formValidator=jQuery(form).validate(); 36 } 37 var superHandler=formValidator.settings.submitHandler; 38 formValidator.settings.submitHandler=function(form) { 39 var widgetID = form.querySelectorAll('.g-recaptcha')[0].getAttribute('data-widgetid'); 40 grecaptcha.execute(widgetID); 41 }; 42 }else { 43 if(form && form.addEventListener) { 44 form.addEventListener('submit', submitListener); 45 }else if(form && form.attachEvent) { 46 window.attachEvent('onsubmit', submitListener); 47 }else if(console.error) { 48 console.error('Could not attach event to the form'); 49 } 50 } 51 52 window['Nocaptcha-'+_noCaptchaFields[i]]=function() { 53 return new Promise(function(resolve, reject) { 54 if(typeof jQuery!='undefined' && typeof jQuery.fn.validate!='undefined' && superHandler) { 55 superHandler(form); 56 }else { 57 form.submit(); 58 } 59 60 resolve(); 61 }); 62 }; 63 64 options.callback = 'Nocaptcha-'+_noCaptchaFields[i]; 65 } else if (field.getAttribute('data-callback')) { 66 options.callback = field.getAttribute('data-callback'); 67 } 68 69 var widget_id = grecaptcha.render(field, options); 70 field.setAttribute("data-widgetid", widget_id); 71 } 72 73 for(var i=0;i<_noCaptchaFields.length;i++) { 74 render(document.getElementById('Nocaptcha-'+_noCaptchaFields[i])); 75 } 76}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.