【问题标题】:YouTube embed player not working in JavascriptYouTube 嵌入播放器无法在 Javascript 中运行
【发布时间】:2017-06-30 21:56:56
【问题描述】:

几天后,通过 JavaScript 嵌入 YouTube 视频的代码停止工作了。现在视频加载但无法播放(播放按钮不可点击),控制台出现此错误:

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);
            }
        }

Playback 在我运行的另一个原型上也中断了。直到几天前,一切都正常工作。我在网上找不到任何东西,也许有人可以解释一下?

----- 更新 ----

嵌入播放再次中断:

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

【问题讨论】:

  • 看到相同的错误消息,但通过 Google IMA HTML5 SDK。
  • @almcd,它可能与 CORS 或 HTTPS 有关吗?因为在 youtube.com 上存在同样的错误,但视频播放正常。
  • 感谢@andrea-f 的建议。但是,我不再看到错误消息。看起来 Google 的修复也解决了 IMA SDK 的问题。
  • @almcd 是的,已解决
  • @almcd 是的,已经修复,再次工作。

标签: javascript youtube youtube-api youtube-javascript-api


【解决方案1】:

Google 已解决该问题,现在 YouTube 视频可以正常播放了!

不知道发生了什么?

-- 2017 年 2 月 23 日更新 ------

嵌入播放再次中断:

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

【讨论】:

  • 我仍然有一些错误,请您帮忙。它只发生在 IE9 上。 !imageUrl
  • 今天第一次在 Chrome 上看到这个。还有其他人吗?
  • 嗨@Simon_Weaver 我也是。
  • 它刚刚开始在我最新的 chrome 56.0.2924.87(64 位)中发生。但在同事 Chrome 中工作正常。在 Firefox 中也可以正常工作。
  • 我在启用“实验功能”时遇到了这个问题。我们可以在此处禁用此选项:chrome://flags/#enable-experimental-web-platform-features
【解决方案2】:

我在 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

我们可以在此处禁用此选项:chrome://flags/#enable-experimental-web-platform-features

-- 2017 年 3 月 10 日更新--

Chrome 57.0.2987.98(64 位)今天发布,运行良好

【讨论】:

    【解决方案3】:

    无论当前的问题是什么,它都与尝试附加事件时的MediaSession 对象有关(在这种情况下为play)。这个对象是 Chrome 的内部对象,所以那里似乎有些东西已经损坏了。

    我在使用 YouTube 的任何其他网站上都看到了同样的问题 - 所以不要浪费时间尝试调试您自己的网站。这不是问题。

    我已重新启动并尝试禁用所有扩展程序。还没有看到任何修复。

    主要是想发布这个,这样人们就不会浪费时间认为他们的代码不好。

    【讨论】:

    • 是的,这表明铬合金损坏了。但这个问题并不普遍,这让我觉得很奇怪。如果你还没有安装 chrome canary,你可以安装。我想知道是否有最近的更新破坏了它,但我现在无法检查。已经看到问题大约 4-5 天了
    • @Simon_Weaver 看看上面答案中 MixerOID 的评论。这似乎只在启用“实验性网络平台功能”时影响 Chrome。
    • @almcd 谢谢!这很有帮助。我忘记了为什么我启用了这个选项,但我很确定我已经这样做了。
    • 今天早上一切似乎又正常了,一切正常,但 Chrome 没有更新。
    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 2019-01-04
    • 2011-09-06
    • 2013-02-12
    • 2013-09-19
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多