1document.addEventListener("DOMContentLoaded", function () { 2 window.createReCaptchaVals = function () { 3 let captchaElements = document.querySelectorAll("[data-recaptcha]"); 4 let operator = '+'; 5 let rand1 = Math.floor(Math.random() * 9) + 1; 6 let rand2 = Math.floor(Math.random() * 9) + 1; 7 let result = rand1 + rand2; 8 9 let captchaWidth = 150; 10 let captchaHeight = 50; 11 12 let canvas = document.createElement('canvas'); 13 canvas.width = captchaWidth; 14 canvas.height = captchaHeight; 15 let context = canvas.getContext('2d'); 16 17 // Rastgele çizgiler ekleyerek görseli karmaÅıklaÅtırma 18 for (let i = 0; i < 50; i++) { 19 let x1 = Math.random() * canvas.width; 20 let y1 = Math.random() * canvas.height; 21 let x2 = Math.random() * canvas.width; 22 let y2 = Math.random() * canvas.height; 23 24 let color = `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})`; 25 26 context.beginPath(); 27 context.strokeStyle = color; 28 context.moveTo(x1, y1); 29 context.lineTo(x2, y2); 30 context.stroke(); 31 } 32 33 context.font = 'bold 20px Arial'; 34 context.fillStyle = 'black'; 35 context.fillText(`${rand1} ${operator} ${rand2} = ?`, 10, 30); 36 37 let captchaImage = new Image(); 38 captchaImage.src = canvas.toDataURL(); 39 40 captchaElements.forEach(element => { 41 element.innerHTML = ` 42 <div class="mb-2">${__('recaptcha.question')}</div> 43 <div class="mb-2"> 44 <div class="d-flex flex-row align-items-center"> 45 <img class="me-2" width="${captchaWidth}" height="${captchaHeight}" src="${captchaImage.src}" alt="Captcha Image"> 46 <div><i class="fa fa-refresh recaptcha-rebuild c-pointer fs-5" aria-hidden="true"></i></div> 47 </div> 48 </div> 49 <div class="d-inline-block"> 50 <input class="form-control input-sm mb-2" name="no-bot-valid" type="text" placeholder="${__('recaptcha.write_answer')}"> 51 <div class="captcha-warning text-danger fw-semibold"></div> 52 <input type="hidden" name="captchaResult" value="${result}"> 53 </div> 54 `; 55 }); 56 57 58 document.querySelectorAll(".recaptcha-rebuild").forEach(button => { 59 button.addEventListener("click", window.createReCaptchaVals); 60 }); 61 }; 62});
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.