Проблемы с асинхронной загрузкой ya.share

pragmatik

Постоялец
Регистрация
11 Фев 2013
Сообщения
122
Реакции
33
В хидере страницы указываю
Код:
<script async src="//yandex.st/share/share.js" type="text/javascript"></script>
обычные конструкции без дополнительных скриптов, например, <span class="yashare-auto-init" data-yashareQuickServices="vkontakte,facebook,twitter,moimir,gplus,odnoklassniki" data-yashareTheme="counter" data-yashareType="big"></span>, при этом прекрасно загружаются,
и только в одном месте использую конструкцию с дополнительным скриптом типа:
Код:
<script type="text/javascript">
new Ya.share({
'element': 'sharelink',
'elementStyle': {
'text': 'Добавить в закладки',
'type': 'button',
'linkIcon': false,
'border': false,
'quickServices': ['']
},
'popupStyle': {
'blocks': { 'Закладки': ['yazakladki']}
}
});
</script>
<span id="sharelink"></span>
при наличии атрибута async у скрипта в хидере элемент <span id="sharelink"></span>, не отображается, я так понимаю из-за того, что код скрипта от которого он зависит при асинхронной загрузке скрипта из хидера выполняется раньше, чем загружается скрипт ya.share.
Подскажите, пожалуйста, как в данном случае и асинхронную загрузку сохранить и элемент отобразить. С js у меня не очень, поэтом приветствуются иллюстрированные листингами советы.
 
Похоже вам требуется что-то вроде
Код:
window.onload = function(e){
   new Ya.share({
      'element': 'sharelink',
      'elementStyle': {
         'text': 'Добавить в закладки',
         'type': 'button',
         'linkIcon': false,
         'border': false,
         'quickServices': ['']
      },
      'popupStyle': {
         'blocks': { 'Закладки': ['yazakladki']}
      }
   });
}

Тогда ваш код выполнится после загрузки всех элементов, требуемых для отображения страницы
 
благодарю! оборачивание в функцию
window.onload = function(e){} действительно решило проблему!
 
Назад
Сверху