1(function () { 2 'use strict'; 3 4 console.log('enasb_recaptcha no init'); 5 6 function init() { 7 console.log('enasb_recaptcha'); 8 9 var debugEl = document.querySelector('.enasb-recaptcha-debug'); 10 if (debugEl && debugEl.getAttribute('data-result')) { 11 try { 12 console.log('reCAPTCHA verification result', JSON.parse(debugEl.getAttribute('data-result'))); 13 } catch (e) { 14 console.log('reCAPTCHA verification result (raw)', debugEl.getAttribute('data-result')); 15 } 16 } 17 18 // Set by an inline <head> script attached in 19 // enasb_companion_form_webform_client_form_alter(). 20 var config = window.enasbRecaptcha; 21 if (!config) { 22 return; 23 } 24 25 if (config.hideBadge && !document.getElementById('enasb-recaptcha-badge-css')) { 26 var style = document.createElement('style'); 27 style.id = 'enasb-recaptcha-badge-css'; 28 style.textContent = '.grecaptcha-badge { visibility: hidden !important; }'; 29 document.head.appendChild(style); 30 } 31 32 var forms = document.querySelectorAll('form.webform-client-form'); 33 Array.prototype.forEach.call(forms, function (form) { 34 if (form.hasAttribute('data-enasb-recaptcha')) return; 35 36 var tokenField = form.querySelector('.enasb-recaptcha-token'); 37 if (!tokenField) return; 38 39 form.setAttribute('data-enasb-recaptcha', '1'); 40 41 form.addEventListener('submit', function (e) { 42 e.preventDefault(); 43 44 console.log('reCAPTCHA: requesting token'); 45 46 var submitter = e.submitter || null; 47 48 grecaptcha.enterprise.ready(function () { 49 grecaptcha.enterprise.execute(config.siteKey, { action: config.action }) 50 .then(function (token) { 51 console.log('reCAPTCHA: token created'); 52 53 tokenField.value = token; 54 55 // form.submit() posts no button name/value, so carry the clicked 56 // buttons in a hidden input; Drupal needs it to resolve the 57 // triggering element (e.g. Submit vs a file Upload button). 58 var button = submitter && submitter.name ? submitter 59 : form.querySelector('.form-actions input[type="submit"], .webform-submit'); 60 if (button && button.name) { 61 var carrier = form.querySelector('input.enasb-recaptcha-op'); 62 if (!carrier) { 63 carrier = document.createElement('input'); 64 carrier.type = 'hidden'; 65 carrier.className = 'enasb-recaptcha-op'; 66 form.appendChild(carrier); 67 } 68 carrier.name = button.name; 69 carrier.value = button.value; 70 } 71 form.submit(); 72 }) 73 .catch(function (error) { 74 console.log('reCAPTCHA: token creation failed', error); 75 }); 76 }); 77 }); 78 }); 79 } 80 81 if (document.readyState === 'loading') { 82 document.addEventListener('DOMContentLoaded', init); 83 } 84 else { 85 init(); 86 } 87})();
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.