2017-02-13 11 views
9

С тех пор как несколько дней код, который отлично работал для встраивания видео YouTube через Javascript, перестает работать. Теперь видео нагрузка, но это не может быть воспроизведено (кнопка воспроизведения не кликабельна), с этой ошибкой в ​​консоли:Встраиваемый проигрыватель YouTube не работает в Javascript

Uncaught TypeError: a.g.mX is not a function 
at O_ (https://www.youtube.com/yts/jsbin/player-en_US-vfl8LqiZp/base.js:3796:24) 
at new P_ (https://www.youtube.com/yts/jsbin/player-en_US-vfl8LqiZp/base.js:3791:111) 
at new c2 (https://www.youtube.com/yts/jsbin/player-en_US-vfl8LqiZp/base.js:3985:268) 
at new i2 (https://www.youtube.com/yts/jsbin/player-en_US-vfl8LqiZp/base.js:4005:210) 
at i2.create (https://www.youtube.com/yts/jsbin/player-en_US-vfl8LqiZp/base.js:6950:321) 
at zh.<anonymous> (https://www.youtube.com/yts/jsbin/www-embed-player-vflxTxlSH/www-embed-player.js:428:269) 
at zh.k.lb (https://www.youtube.com/yts/jsbin/www-embed-player-vflxTxlSH/www-embed-player.js:428:308) 
at Dh (https://www.youtube.com/yts/jsbin/www-embed-player-vflxTxlSH/www-embed-player.js:426:143) 
at zh.k.pa (https://www.youtube.com/yts/jsbin/www-embed-player-vflxTxlSH/www-embed-player.js:419:176) 
at https://www.youtube.com/yts/jsbin/www-embed-player-vflxTxlSH/www-embed-player.js:461:420 

код JS выглядит следующим образом:

document.getElementById('player').setAttribute("style","height:"+(window.innerHeight * 0.87)+"px;"); 
document.getElementById('youtube_frame').src="http://www.youtube.com/player_api"; 
    var player; 
    function onYouTubePlayerAPIReady() { 
      player = new YT.Player('player', { 
       height: "100%", 
       width: "100%", 
       videoId: start_video, 
       events: { 
       'onReady': onPlayerReady, 
       'onStateChange': onPlayerStateChange 
       } 
      }); 
    } 
    function onPlayerReady(event) { 

      player_ref = event.target; 
      event.target.playVideo(); 
     } 

     // when video ends 
     function onPlayerStateChange(event) {   
      if(event.data === 0) {   

       event.target.loadVideoById(start_video); 
      } 
     } 

Воспроизведение также разбивалось о другой прототип, который я запускаю. Все работает нормально, пока пару дней назад. Я не могу найти что-либо в Интернете, возможно, кто-то может пролить свет?

----- UPDATE ----

Встраивание воспроизведение снова сломался:

Uncaught TypeError: a.g.setActionHandler is not a function 
at M_ (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3788:24) 
at new N_ (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3783:111) 
at new a2 (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3978:367) 
at new g2 (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3999:210) 
at g2.create (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:6995:333) 
at Gi.<anonymous> (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:507:269) 
at Gi.l.jb (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:507:308) 
at Ki (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:505:143) 
at Gi.l.oa (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:498:176) 
at https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:557:378 
+1

Просмотр того же сообщения об ошибке, но через SDK Google IMA HTML5. – almcd

+0

@almcd, может ли это быть связано с CORS или HTTPS? Потому что на youtube.com есть такая же ошибка, но видео играет хорошо. –

+0

Спасибо за предложение @ andrea-f. Однако я больше не вижу сообщение об ошибке. Похоже, что исправление Google разрешило проблему для SDK IMA. – almcd

ответ

3

У меня эта проблема в Chrome 56.0.2924.87 (64-разрядная версия) , когда "экспериментальные функции" включены.

base.js:7046 Uncaught TypeError: a.g.setActionHandler is not a function 
at bY (https://www.youtube.com/yts/jsbin/player-ru_RU-vfleBND20/base.js:3618:24) 
at new cY (https://www.youtube.com/yts/jsbin/player-ru_RU-vfleBND20/base.js:3613:111) 
at new z1 (https://www.youtube.com/yts/jsbin/player-ru_RU-vfleBND20/base.js:3983:268) 
at new j2 (https://www.youtube.com/yts/jsbin/player-ru_RU-vfleBND20/base.js:4044:209) 
at Object.j2.create (https://www.youtube.com/yts/jsbin/player-ru_RU-vfleBND20/base.js:7045:317) 
at Object.ytplayer.load (https://www.youtube.com/watch?v=n-AdoTkXwbc:241:75024) 
at https://www.youtube.com/watch?v=n-AdoTkXwbc:241:75172 
at https://www.youtube.com/watch?v=n-AdoTkXwbc:241:75181 

Мы можем отключить эту опцию здесь: хром: // флаги/Разрешают-экспериментальная-веб-платформа-функция

- ОБНОВЛЕНИЕ 10.03.2017 -

Chrome 57.0.2987.98 (64-бит) опубликовано сегодня, а отлично работает!

7

Проблема была решена с помощью Google и теперь видео YouTube играть хорошо!

Интересно, что случилось?

----- UPDATE 23/02/2017 ------

Встраивание воспроизведение снова сломался:

Uncaught TypeError: a.g.setActionHandler is not a function 
at M_ (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3788:24) 
at new N_ (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3783:111) 
at new a2 (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3978:367) 
at new g2 (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:3999:210) 
at g2.create (https://www.youtube.com/yts/jsbin/player-en_US-vflqOi6vK/base.js:6995:333) 
at Gi.<anonymous> (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:507:269) 
at Gi.l.jb (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:507:308) 
at Ki (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:505:143) 
at Gi.l.oa (https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:498:176) 
at https://www.youtube.com/yts/jsbin/www-embed-player-vfl-i_LLs/www-embed-player.js:557:378 
+1

Еще какая-то ошибка для меня, пожалуйста, помогите. Это происходит только для IE9. ! [imageUrl] (http://i64.tinypic.com/2r583lh.png) – Shubham

+6

Увидеть это для Chrome в первый раз сегодня. Кто-нибудь еще? –

+3

Привет @Simon_Weaver да меня тоже. –

3

Вне зависимости от тока проблема она связана с MediaSession объект при попытке присоединить событие (play в этом случае). Этот объект является внутренним для Chrome, поэтому кажется, что там что-то повреждено.

Я вижу ту же проблему на любом другом сайте, на котором используется YouTube, поэтому не тратьте время на отладку собственного сайта. Это не проблема.

Я перезагрузился и попытался отключить все расширения. Пока не вижу никаких исправлений.

Главным образом хотелось опубликовать это, чтобы люди не теряли время, думая, что их код плох.

enter image description here

+0

В ожидании обновления для Chrome затем ... – mjwatts

+0

Я предлагаю испорченный хром. Но проблема не получила широкого распространения, которая кажется мне странной. Вы можете установить хром-канарейку, если вы еще этого не сделали. Мне интересно, было ли последнее обновление, которое сломало его, но я не могу проверить прямо сейчас. У меня проблемы со сроком около 4-5 дней. –

+1

@Simon_Weaver Взгляните на комментарий MixerOID в ответе выше. Это влияет только на Chrome, когда включены функции «Экспериментальная веб-платформа». – almcd