PageSourceSearch

https://nyuka-now.com/wp-content/plugins/advanced-nocaptcha-recaptcha/includes/methods/js/c4wp-v3.js?ver=7.6.2

js nyuka-now.com collected 2026-09-24 10:52:57 UTC 15,883 bytes, 319 lines download raw bytes

1				/* @v3-js:start */
2				let c4wp_onloadCallback = function() {
3				    for (var i = 0; i < document.forms.length; i++) {
4				        let form = document.forms[i];
5				        let captcha_div = form.querySelector('.c4wp_captcha_field_div:not(.rendered)');
6				        let jetpack_sso = form.querySelector('#jetpack-sso-wrap');
7				        var wcblock_submit = form.querySelector('.wc-block-components-checkout-place-order-button');
8				        var has_wc_submit = null !== wcblock_submit;
9
10				        if (null === captcha_div && !has_wc_submit || form.id == 'create-group-form') {
11				            if (!form.parentElement.classList.contains('nf-form-layout')) {
12				                continue;
13				            }
14
15				        }
16				        if (!has_wc_submit) {
17				            if (!(captcha_div.offsetWidth || captcha_div.offsetHeight || captcha_div.getClientRects().length)) {
18				                if (jetpack_sso == null && !form.classList.contains('woocommerce-form-login')) {
19				                    continue;
20				                }
21				            }
22				        }
23
24				        let alreadyCloned = form.querySelector('.c4wp-submit');
25				        if (null != alreadyCloned) {
26				            continue;
27				        }
28
29				        let foundSubmitBtn = form.querySelector('#signup-form [type=submit], [type=submit]:not(#group-creation-create):not([name="signup_submit"]):not([name="ac_form_submit"]):not(.verify-captcha)');
30				        let cloned = false;
31				        let clone = false;
32
33				        // Submit button found, clone it.
34				        if (foundSubmitBtn) {
35				            clone = foundSubmitBtn.cloneNode(true);
36				            clone.classList.add('c4wp-submit');
37				            clone.removeAttribute('onclick');
38				            clone.removeAttribute('onkeypress');
39				            if (foundSubmitBtn.parentElement.form === null) {
40				                foundSubmitBtn.parentElement.prepend(clone);
41				            } else {
42				                foundSubmitBtn.parentElement.insertBefore(clone, foundSubmitBtn);
43				            }
44				            foundSubmitBtn.style.display = "none";
45				            captcha_div = form.querySelector('.c4wp_captcha_field_div');
46				            cloned = true;
47				        }
48
49				        // WC block checkout clone btn.
50				        if (has_wc_submit && !form.classList.contains('c4wp-primed')) {
51				            clone = wcblock_submit.cloneNode(true);
52				            clone.classList.add('c4wp-submit');
53				            clone.classList.add('c4wp-clone');
54				            clone.removeAttribute('onclick');
55				            clone.removeAttribute('onkeypress');
56				            if (wcblock_submit.parentElement.form === null) {
57				                wcblock_submit.parentElement.prepend(clone);
58				            } else {
59				                wcblock_submit.parentElement.insertBefore(clone, wcblock_submit);
60				            }
61				            wcblock_submit.style.display = "none";
62
63				            clone.addEventListener('click', function(e) {
64				                if (form.classList.contains('c4wp_v2_fallback_active')) {
65				                    jQuery(form).find('.wc-block-components-checkout-place-order-button:not(.c4wp-submit)').click();
66				                    return true;
67				                } else {
68				                    grecaptcha.execute(c4wpConfig.site_key, ).then(function(data) {
69				                        form.classList.add('c4wp-primed');
70				                    });
71				                }
72
73				            });
74				            foundSubmitBtn = wcblock_submit;
75				            cloned = true;
76				        }
77
78				        // Clone created, listen to its click.
79				        if (cloned) {
80				            clone.addEventListener('click', function(event) {
81				                logSubmit(event, 'cloned', form, foundSubmitBtn);
82				            });
83				            // No clone, execute and watch for form submission.
84				        } else {
85				            grecaptcha.execute(
86				                c4wpConfig.site_key,
87				            ).then(function(data) {
88				                var responseElem = form.querySelector('.c4wp_response');
89				                if (responseElem == null) {
90				                    var responseElem = document.querySelector('.c4wp_response');
91				                }
92				                if (responseElem != null) {
93				                    responseElem.setAttribute('value', data);
94				                }
95				            });
96
97				            // Anything else.
98				            form.addEventListener('submit', function(event) {
99				                logSubmit(event, 'other', form);
100				            });
101				        }
102
103				        function logSubmit(event, form_type = '', form, foundSubmitBtn) {
104				            // Standard v3 check.
105				            if (!form.classList.contains('c4wp_v2_fallback_active') && !form.classList.contains('c4wp_verified')) {
106				                event.preventDefault();
107				                try {
108				                    grecaptcha.execute(
109				                        c4wpConfig.site_key,
110				                    ).then(function(data) {
111				                        var responseElem = form.querySelector('.c4wp_response');
112				                        if (responseElem == null) {
113				                            var responseElem = document.querySelector('.c4wp_response');
114				                        }
115
116				                        responseElem.setAttribute('value', data);
117
118				                        if (form.classList.contains('wc-block-checkout__form')) {
119				                            // WC block checkout.
120				                            let input = document.querySelector('input[id*="c4wp-wc-checkout"]');
121				                            let lastValue = input.value;
122				                            var token = data;
123				                            input.value = token;
124				                            let event = new Event('input', {
125				                                bubbles: true
126				                            });
127				                            event.simulated = true;
128				                            let tracker = input._valueTracker;
129				                            if (tracker) {
130				                                tracker.setValue(lastValue);
131				                            }
132				                            input.dispatchEvent(event)
133				                        }
134
135				                        if ('nothing' !== c4wpConfig.failure_action) {
136				                            // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
137				                            /* @v3-fallback-js:start */
138				                            if (typeof captcha_div == 'undefined' && form.classList.contains('wc-block-checkout__form')) {
139				                                var captcha_div = form.querySelector('#additional-information-c4wp-c4wp-wc-checkout');
140				                            }
141
142				                            if (typeof captcha_div == 'undefined') {
143				                                var captcha_div = form.querySelector('.c4wp_captcha_field_div');
144				                            }
145
146				                            var parentElem = captcha_div.parentElement;
147
148				                            if ((form.classList.contains('c4wp-primed')) || (!form.classList.contains('c4wp_verify_underway') && captcha_div.parentElement.getAttribute('data-c4wp-use-ajax') == 'true')) {
149
150				                                form.classList.add('c4wp_verify_underway');
151				                                const flagMarkup = '<input id="c4wp_ajax_flag" type="hidden" name="c4wp_ajax_flag" value="c4wp_ajax_flag">';
152				                                var flagMarkupDiv = document.createElement('div');
153				                                flagMarkupDiv.innerHTML = flagMarkup.trim();
154
155				                                form.appendChild(flagMarkupDiv);
156
157				                                var nonce = captcha_div.parentElement.getAttribute('data-nonce');
158
159				                                var formData = new FormData();
160
161				                                formData.append('action', 'c4wp_ajax_verify');
162				                                formData.append('nonce', nonce);
163				                                formData.append('response', data);
164
165				                                fetch(c4wpConfig.ajax_url, {
166				                                        method: 'POST',
167				                                        body: formData,
168				                                    }) // wrapped
169				                                    .then(
170				                                        res => res.json()
171				                                    )
172				                                    .then(data => {
173				                                        if (data['success']) {
174				                                            form.classList.add('c4wp_verified');
175
176															var existingFlag = document.getElementById('c4wp_ajax_flag');
177															if (existingFlag) {
178																existingFlag.value = data.data.token; 
179															} else {
180																const flagMarkup = '<input id="c4wp_ajax_flag" type="hidden" name="c4wp_ajax_flag" value="' + data.data.token + '">';
181																var flagMarkupDiv = document.createElement('div');
182																flagMarkupDiv.innerHTML = flagMarkup.trim();
183																form.appendChild( flagMarkupDiv );
184															}
185
186				                                            // Submit as usual.
187				                                            if (foundSubmitBtn) {
188				                                                foundSubmitBtn.click();
189				                                            } else if (form.classList.contains('wc-block-checkout__form')) {
190				                                                jQuery(form).find('.wc-block-components-checkout-place-order-button:not(.c4wp-submit)').click();
191				                                            } else {
192				                                                if (typeof form.submit === 'function') {
193				                                                    form.submit();
194				                                                } else {
195				                                                    HTMLFormElement.prototype.submit.call(form);
196				                                                }
197				                                            }
198
199				                                        } else {
200				                                            //jQuery( '.nf-form-cont' ).trigger( 'nfFormReady' );
201
202				                                            if ('redirect' === c4wpConfig.failure_action) {
203				                                                window.location.href = c4wpConfig.failure_redirect;
204				                                            }
205
206				                                            if ('v2_checkbox' === c4wpConfig.failure_action) {
207				                                                if (form.classList.contains('wc-block-checkout__form')) {
208				                                                    captcha_div = captcha_div.parentElement;
209				                                                }
210
211				                                                captcha_div.innerHTML = '';
212				                                                form.classList.add('c4wp_v2_fallback_active');
213				                                                flagMarkupDiv.firstChild.setAttribute('name', 'c4wp_v2_fallback');
214
215				                                                var c4wp_captcha = grecaptcha.render(captcha_div, {
216				                                                    'sitekey': c4wpConfig.failure_v2_site_key,
217				                                                    'size': c4wpConfig.size,
218				                                                    'theme': c4wpConfig.theme,
219				                                                    'expired-callback': function() {
220				                                                        grecaptcha.reset(c4wp_captcha);
221				                                                    }
222				                                                });
223				                                            }
224
225				                                            if (form.classList.contains('wc-block-checkout__form')) {
226				                                                return true;
227				                                            }
228
229				                                            if (form.parentElement.classList.contains('nf-form-layout')) {
230				                                                return false;
231				                                            }
232
233				                                            // Prevent further submission
234				                                            event.preventDefault();
235				                                            return false;
236				                                        }
237				                                    })
238				                                    .catch(err => console.error(err));
239
240				                                // Prevent further submission
241				                                event.preventDefault();
242				                                return false;
243				                            }
244				                            /* @v3-fallback-js:end */
245				                        }
246
247
248				                        // Submit as usual.
249				                        if (foundSubmitBtn) {
250				                            foundSubmitBtn.click();
251				                        } else if (form.classList.contains('wc-block-checkout__form')) {
252				                            jQuery(form).find('.wc-block-components-checkout-place-order-button:not(.c4wp-submit)').click();
253				                        } else {
254
255				                            if (typeof form.submit === 'function') {
256				                                form.submit();
257				                            } else {
258				                                HTMLFormElement.prototype.submit.call(form);
259				                            }
260				                        }
261
262				                        return true;
263				                    });
264				                } catch (e) {
265				                    // Silence.
266				                }
267				                // V2 fallback.
268				            } else {
269				                if (form.classList.contains('wpforms-form') || form.classList.contains('frm-fluent-form') || form.classList.contains('woocommerce-checkout')) {
270				                    return true;
271				                }
272
273				                if (form.parentElement.classList.contains('nf-form-layout')) {
274				                    return false;
275				                }
276
277				                if (form.classList.contains('wc-block-checkout__form')) {
278				                    return;
279				                }
280
281				                // Submit as usual.
282				                if (typeof form.submit === 'function') {
283				                    form.submit();
284				                } else {
285				                    HTMLFormElement.prototype.submit.call(form);
286				                }
287
288				                return true;
289				            }
290				        };
291				    }
292				};
293
294				grecaptcha.ready(c4wp_onloadCallback);
295
296				if (typeof jQuery !== 'undefined') {
297				    jQuery('body').on('click', '.acomment-reply.bp-primary-action', function(e) {
298				        c4wp_onloadCallback();
299				    });
300				}
301
302				//token is valid for 2 minutes, So get new token every after 1 minutes 50 seconds
303				setInterval(c4wp_onloadCallback, 110000);
304
305
306				eval(c4wpConfig.additional_js); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
307
308
309				window.addEventListener("load", (event) => {
310				    if (typeof jQuery !== 'undefined' && jQuery('input[id*="c4wp-wc-checkout"]').length) {
311				        var element = document.createElement('div');
312				        var html = c4wpConfig.field_markup;
313				        element.innerHTML = html;
314				        jQuery('[class*="c4wp-wc-checkout"]').append(element);
315				        jQuery('[class*="c4wp-wc-checkout"]').find('*').off();
316				        c4wp_onloadCallback();
317				    }
318				});
319				/* @v3-js:end */

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.