Google platform.js иногда не запускает обратный вызов при загрузке - PullRequest
0 голосов
/ 15 ноября 2018

Следующее не будет вызывать platform_callback, если я загружаю другие источники javascript в определенном порядке.

<script type="text/javascript" src="//apis.google.com/js/platform.js?onload=platform_callback" async defer></script> 
<script>
    function platform_callback() {
        console.log("callback");
    }
</script>

Мне трудно реплицировать это ... но если у меня много библиотек js(angular, moment, bootstrap) загрузка после вызова платформы, обратный вызов onload не запускается.

Вот рисунок, показывающий, что console.log запускается только некоторое время после обновления около десятка раз:https://i.imgur.com/C5FFJhb.gif

Этот HTML-код вызывает проблему:

<script src="https://apis.google.com/js/platform.js?onload=platform_callback" async defer></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-animate.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-route.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular-sanitize.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js" crossorigin="anonymous"></script>
<script>
    function platform_callback() {
        console.log("init");
        gapi.load('auth2', function() {
            console.log("auth2");
        });
    }
</script>

1 Ответ

0 голосов
/ 15 ноября 2018

Библиотека Google загружается, затем вызывает platform_callback, который может быть не определен в это время, если браузер занят загрузкой других js-файлов.

...