За последние 24 часа нас посетили 16747 программистов и 1603 робота. Сейчас ищут 1280 программистов ...

Google recaptcha вызов по готовности страницы

Тема в разделе "JavaScript и AJAX", создана пользователем виталий032, 9 ноя 2017.

  1. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    Использую invisible google recaptcha
    Взял пример кода с гугла и доделал под себя:
    Код (Javascript):
    1. <html>
    2. <head>
    3. <script>
    4.  
    5.     //> третье
    6.     function onSubmit(token) {
    7.  
    8.         var $form = jQuery('#demo-form');
    9.  
    10.         $.ajax({
    11.             url: $form.attr('action'),
    12.             data: 'g-recaptcha-response=' + token,
    13.             method: $form.attr('method'),
    14.             success: function(data) {
    15.                 // json data from google
    16.                 // {"success": "could be either true or false"}
    17.                 e = JSON.parse(data);
    18.                 alert(e['success']);
    19.  
    20.                 if(e['success'] == true) {
    21.                     alert('if success == true');
    22.                 } else {
    23.                     alert('if success == false');
    24.                 }
    25.             },
    26.             error: function(data) {
    27.                 alert('Check interner connection');
    28.             }
    29.         });
    30.     }
    31.     //<
    32.  
    33.     //> второе
    34.     function validate(event) {
    35.         event.preventDefault();
    36.         grecaptcha.execute();
    37.     }
    38.     //<
    39.  
    40.     //> первое
    41.     function onload() {
    42.         var element = document.getElementsByTagName('body')[0];
    43.         element.onmousemove = validate;
    44.     }
    45.     //<
    46. </script>
    47.  
    48. </head>
    49. <body>
    50.  
    51.     <form id="demo-form" action="do.php" method="POST">
    52.         Name: (required) <input id="field" name="field">
    53.         <div id='recaptcha' class="g-recaptcha"
    54.           data-sitekey="6LfIYTcUAAAAABhA5_cCv4JbErhJ1ll-78txxXTl"
    55.           data-callback="onSubmit"
    56.           data-size="invisible"></div>
    57.         <button id='submit'>submit</button>
    58.     </form>
    59.  
    60.     <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    61.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" defer></script>
    62.     <script defer>onload();</script>
    63. </body>
    64. </html>
    НО, решение с вызовом функции validate по event-у мне не нравится.
    Я хочу сделать, чтобы вызов функции был когда страница загрузилась, вот так:
    Код (Javascript):
    1. <script>
    2.  
    3.     //> третье
    4.     function onSubmit(token) {
    5.  
    6.         var $form = jQuery('#demo-form');
    7.  
    8.         $.ajax({
    9.             url: $form.attr('action'),
    10.             data: 'g-recaptcha-response=' + token,
    11.             method: $form.attr('method'),
    12.             success: function(data) {
    13.                 // json data from google
    14.                 // {"success": "could be either true or false"}
    15.                 e = JSON.parse(data);
    16.                 alert(e['success']);
    17.  
    18.                 if(e['success'] == true) {
    19.                     alert('if success == true');
    20.                 } else {
    21.                     alert('if success == false');
    22.                 }
    23.             },
    24.             error: function(data) {
    25.                 alert('Check interner connection');
    26.             }
    27.         });
    28.     }
    29.     //<
    30.  
    31.     //> второе
    32.     function validate() {
    33.         grecaptcha.execute();
    34.     }
    35.     //<
    36.  
    37.     //> первое
    38.     function onload() {
    39.         validate();
    40.     }
    41.     //<
    42. </script>
    Но выдает ошибку, что типо функция grecaptcha не найдена.
    Код (Text):
    1. Uncaught ReferenceError: grecaptcha is not defined
    Как мне вызвать "проверку на бота" при загрузке страницы?