PageSourceSearch

https://okoptica.ru/bitrix/js/twim.recaptchafree/script.js?17535211864421

js okoptica.ru collected 2026-10-07 16:31:53 UTC 4,421 bytes, 122 lines download raw bytes

1/* 
2	ReCaptcha 2.0 Google js
3	modul bitrix
4	Shevtcoff S.V. 
5	date 24.03.17
6	time 08:55
7	
8	Recaptchafree - object
9	Recaptchafree.render() - method render
10	Recaptchafree.reset() - method reset
11	Recaptchafree.items - array id widget
12*/
13
14/* global grecaptcha */
15
16"use strict";
17
18var Recaptchafree = Recaptchafree || {};
19Recaptchafree.items = new Array();
20Recaptchafree.form_submit;
21/**
22 * render recaptcha
23 * @returns false
24 */
25Recaptchafree.render = function() { 
26   if(window.grecaptcha){
27        var elements = document.querySelectorAll('div.g-recaptcha');
28        var widget;
29        Recaptchafree.items = [];
30        for (var i = 0; i < elements.length; i++) {
31            if(elements[i].innerHTML === "") {
32                widget = grecaptcha.render(elements[i], {
33                    'sitekey' : elements[i].getAttribute("data-sitekey"),
34                    'theme' : elements[i].getAttribute("data-theme"),
35                    'size' : elements[i].getAttribute("data-size"),
36                    'callback' : elements[i].getAttribute("data-callback"),
37                    'badge' : elements[i].getAttribute("data-badge")
38                });
39                elements[i].setAttribute("data-widget", widget);
40                Recaptchafree.items.push(widget);
41            } else {
42                widget =  elements[i].getAttribute("data-widget");
43                Recaptchafree.items.push(parseInt(widget));
44            }
45        }
46    } 
47    
48};
49/**
50 * reset recaptcha after ajax or show modal
51 * @returns  false
52 */
53Recaptchafree.reset = function() { 
54   if(window.grecaptcha){
55        Recaptchafree.render();
56            for (var i = 0; i < Recaptchafree.items.length; i++) {
57                grecaptcha.reset(Recaptchafree.items[i]);
58            } 
59
60    }  
61};
62/**
63 * callback submit form with invisible recaptcha
64 * @param {type} token
65 * @returns false
66 */
67function RecaptchafreeSubmitForm(token) {
68    if(Recaptchafree.form_submit !== undefined){
69        var x = document.createElement("INPUT"); // create token input
70        x.setAttribute("type", "hidden");  
71        x.name = "g-recaptcha-response";
72        x.value = token;
73        Recaptchafree.form_submit.appendChild(x);  // append current form
74        var elements = Recaptchafree.form_submit.elements;
75        for (var i = 0; i < elements.length; i++) {
76            if(elements[i].getAttribute("type") === "submit")  {
77                var submit_hidden = document.createElement("INPUT"); // create submit input hidden
78                submit_hidden.setAttribute("type", "hidden");  
79                submit_hidden.name = elements[i].name;
80                submit_hidden.value = elements[i].value;
81                Recaptchafree.form_submit.appendChild(submit_hidden);  // append current form
82            }
83        }
84        document.createElement('form').submit.call(Recaptchafree.form_submit); // submit form
85    }       
86};
87/**
88 * onload recaptcha  
89 * @returns  false
90 */
91function onloadRecaptchafree(){
92    Recaptchafree.render();
93    // If invisible recaptcha on the page
94    if (document.addEventListener) { 
95        document.addEventListener('submit',function(e){
96            if(e.target && e.target.tagName === "FORM"){
97                var g_recaptcha = e.target.querySelectorAll('div.g-recaptcha');
98                if(g_recaptcha[0] !== undefined && g_recaptcha[0].getAttribute("data-size") === "invisible"){
99                    var widget_id = g_recaptcha[0].getAttribute("data-widget");
100                    grecaptcha.execute(widget_id);
101                    Recaptchafree.form_submit = e.target;
102                    e.preventDefault();    
103                }
104            } 
105        }, false);
106    } else {
107        document.attachEvent("onsubmit", function(e){
108            var target = e.target || e.srcElement;
109            if(e.target && e.target.tagName === "FORM"){
110                var widget_id = e.target.getAttribute("data-widget");
111                grecaptcha.execute(widget_id);
112                Recaptchafree.form_submit = target;    
113                e.returnValue = false;
114            }
115        });
116    }
117    // hide grecaptcha-badge, if multi invisible recaptcha
118    var badges = document.querySelectorAll('.grecaptcha-badge'); 
119    for (var i = 1; i < badges.length; i++) {
120        badges[i].style.display="none";
121    }
122} 

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.