Smoothstate - Проблема с выполнением внешнего скрипта (Recaptcha) - PullRequest
0 голосов
/ 02 марта 2019

Я использую Smoothstate на своем сайте и недавно включил Recaptcha в мою контактную форму, что привело к странной проблеме: скрипт Recaptcha, который загружается через тег скрипта в форме, не выполняется при загрузке первой страницы через Smoothstate;на последующих загрузках это делает, хотя.Если я включу скрипт в голову, он, кажется, будет работать нормально, но я бы предпочел не загружать скрипт на каждой странице, а только на странице формы контакта.Я в тупике, почему так происходит - у кого-нибудь есть идея?

Вот код, который у меня есть в моей форме:

<script src="https://www.google.com/recaptcha/api.js?render=xxx"></script>
<script>
    grecaptcha.ready(function() {
        grecaptcha.execute('xxx', {action: ''}).then(function(token) {
           document.getElementById('g-recaptcha-response').value = token;
        });
    });
</script>

А это мой код Smoothstate:

$(function() {
'use strict';
var options = {
        prefetch: true,
        cacheLength: 2, 
        onStart: {
            duration: 500, // Duration of our animation
            render: function($container) {
                // Add your CSS animation reversing class
                $container.addClass('is-exiting');

                // Restart your animation
                smoothState.restartCSSAnimations();
            }
        },
        onProgress: {
            // How long this animation takes
            duration: 0,
            // A function that dictates the animations that take place
            render: function ($container) {
                $('.loader-ring').show(100);
            }
        },
        onReady: {
            duration: 0,
            render: function($container, $newContent) {
                // Remove your CSS animation reversing class
                $container.removeClass('is-exiting');

                // Inject the new content
                $container.html($newContent);

            }
        },
        onAfter: function($container, $newContent) {
            addClass();
            fn();
        },
        blacklist: '.form, .image-link'
    },
    smoothState = $('#page').smoothState(options).data('smoothState');

});

...