1+
2+ var reCaptchaV2 = reCaptchaV2 || { } ;
3+ reCaptchaV2 . scriptLoaded = null ;
4+
5+ reCaptchaV2 . waitScriptLoaded = function ( resolve ) {
6+ if ( typeof grecaptcha !== 'undefined' && typeof grecaptcha . render !== 'undefined' ) {
7+ resolve ( ) ;
8+ } else {
9+ setTimeout ( ( ) => reCaptchaV2 . waitScriptLoaded ( resolve ) , 100 ) ;
10+ }
11+ } ;
12+
13+ reCaptchaV2 . init = function ( ) {
14+ const scripts = Array . from ( document . getElementsByTagName ( 'script' ) ) ;
15+ if ( ! scripts . some ( s => ( s . src || '' ) . startsWith ( 'https://www.google.com/recaptcha/api.js' ) ) ) {
16+ const script = document . createElement ( 'script' ) ;
17+ script . src = 'https://www.google.com/recaptcha/api.js?render=explicit' ;
18+ script . async = true ;
19+ script . defer = true ;
20+ document . head . appendChild ( script ) ;
21+ }
22+
23+ if ( reCaptchaV2 . scriptLoaded === null ) {
24+ reCaptchaV2 . scriptLoaded = new Promise ( reCaptchaV2 . waitScriptLoaded ) ;
25+ }
26+ return reCaptchaV2 . scriptLoaded ;
27+ } ;
28+
29+ reCaptchaV2 . render = function ( dotNetObj , selector , siteKey ) {
30+ return new Promise ( ( resolve , reject ) => {
31+ reCaptchaV2 . init ( ) . then ( ( ) => {
32+ try {
33+ const widgetId = grecaptcha . render ( selector , {
34+ 'sitekey' : siteKey ,
35+ 'callback' : ( response ) => {
36+ dotNetObj . invokeMethodAsync ( 'CallbackOnSuccess' , response ) ;
37+ } ,
38+ 'expired-callback' : ( ) => {
39+ dotNetObj . invokeMethodAsync ( 'CallbackOnExpired' ) ;
40+ } ,
41+ 'error-callback' : ( ) => {
42+ dotNetObj . invokeMethodAsync ( 'CallbackOnError' ) ;
43+ }
44+ } ) ;
45+ resolve ( widgetId ) ;
46+ } catch ( error ) {
47+ reject ( error ) ;
48+ }
49+ } ) . catch ( reject ) ;
50+ } ) ;
51+ } ;
52+
53+ // Fonction utilitaire pour réinitialiser un widget
54+ reCaptchaV2 . reset = function ( widgetId ) {
55+ if ( typeof grecaptcha !== 'undefined' && typeof grecaptcha . reset !== 'undefined' ) {
56+ grecaptcha . reset ( widgetId ) ;
57+ }
58+ } ;
59+
60+ // Fonction utilitaire pour obtenir la réponse
61+ reCaptchaV2 . getResponse = function ( widgetId ) {
62+ if ( typeof grecaptcha !== 'undefined' && typeof grecaptcha . getResponse !== 'undefined' ) {
63+ return grecaptcha . getResponse ( widgetId ) ;
64+ }
65+ return null ;
66+ } ;
0 commit comments