Следующее не будет вызывать 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>
Библиотека Google загружается, затем вызывает platform_callback, который может быть не определен в это время, если браузер занят загрузкой других js-файлов.