Не работает onYouTubeIframeAPIReady

163
12 февраля 2019, 02:10
success: function(data, textStatus, jqXHR) {
      var split_data = data['text'].replace(/[^0-9]/gim,'')
      if (!data) {
        return null
      }
      var playerNo = next_id-1;
      if (playerNo != 2) {
        player_list.push({
            id: 'player' + playerNo, 
        });
      }
      console.log('player_list: ', player_list)
      var liner_line = products_place.find('.liner-line')
           .append('<div class="box blocks" data-id="'+ next_id +'">' +
                    '<div class="div_to_be_hidden"><span class="news_span"> Новости:'+ ' '  + split_data + '</span></div>' +
                      '<iframe id="player'+next_id+'" width="294" height="165"'+ 
                        'src="https://www.youtube.com/embed/'+ data['data']['video_id'] +'?enablejsapi=1'+'" ' + 
                        'frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""> '+
                      '</iframe>' +
                    '</div>'
      )
      var players = new Array()
      window.onYouTubeIframeAPIReady = function() {
        console.log('> SUCCESS')
        for (var i = 0; i < player_list.length; i++) {
          var curplayer = createPlayer(player_list[i]);
          players[i] = curplayer;
        }  
      }
      function createPlayer(playerInfo) {
        playerInfo.id = new YT.Player(playerInfo.id, {
          events: {
            'onReady': onReady
          }
        });
        function onReady() {
          var player = playerInfo.id
          player.addEventListener('onStateChange', function(e) {
            if(player.getPlayerState() == 3 || player.getPlayerState() == 1) {
              $('.div_to_be_hidden').hide();
              $('.font').hide()
                }
            if(player.getPlayerState() == 0 || player.getPlayerState() == 2) { 
              $('.div_to_be_hidden').show();
              $('.font').show();
            }
          })
        }
      }
    }

При успешной загрузке Ajax функция onYouTubeIframeAPIReady ни в какую не хочет работать. Есть подозрение, что функция эта вызывается только один раз. Т.к выше в коде у меня точно такой же Ajax запрос, разница в них в том, что первый сразу подгружает два видео при загрузке страницы, а второй, при кликании только грузит видео. В первом случае onYouTubeIframeAPIReady - работает, а вот во втором - нет.

READ ALSO
Замена строк регулярным выражением в JS

Замена строк регулярным выражением в JS

Есть строка: СЧЁТЕСЛИМН('ИСХ_Сделки'!$B:$B;C$3;'ИСХ_Сделки'!$J:$J;$A18)СУММ(C18:I18)AK18+AT18+AB18+S18+J18СУММ(U18:AA18) На выходе нужно получить: СЧЁТЕСЛИМН('ИСХ_Сделки'!$B:$B;C$3;'ИСХ_Сделки'!$J:$J;$A18)СУММ(C122:I122)AK122+AT122+AB122+S122+J122СУММ(U122:AA122)

262
Релизация flatMap JavaScript

Релизация flatMap JavaScript

При добавлении к конструктору Array свойства flatMap нужно задать определенный контекстКак это лучше сделать?

197
Валидация скрытого поля на jquery

Валидация скрытого поля на jquery

Как сделать чтобы работала валидация required для одного конкретного скрытого поля из массива полей для загрузки, например

187