YouTube的iframe的API - onReady和onStateChanged事件IE9

2019-07-21 01:04发布

我一直在排查和搜索答案,这几个小时,但没有成功。 从API文档示例代码被逐字使用。 示例代码,其他人在IE9发布,并说工作不适合我。 我已经证实了DOCTYPE在HTML设置正确,我没有隐瞒使用显示器=无在CSS的iframe和浏览器模式是IE9和文档模式是IE9标准。 我的安全设置配置为中高。 即使谷歌的样本页面没有在我的IE9浏览器为我工作。

https://developers.google.com/youtube/youtube_player_demo

当我点击“播放”,力图使影片播放(在上面的链接),我得到的各种错误在IE浏览器的脚本调试控制台。 第一个错误是这样的:

SCRIPT5009:“视频”是未定义

请帮忙! 我的示例代码如下。 电影加载和我看到“API准备”警报,但没有任何其他活动将在IE9火。 我不知道我错过了什么! 如果我不知道这一点很快我将不得不放弃在我的项目对HTML5视频播放使用的YouTube。

<!DOCTYPE html>
<html>
  <head><title></title></head>
  <body>
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script type="text/javascript">
        // 2. This code loads the IFrame Player API code asynchronously.
        var tag = document.createElement('script');

        // This is a protocol-relative URL as described here:
        //     http://paulirish.com/2010/the-protocol-relative-url/
        // If you're testing a local page accessed via a file:/// URL, please set tag.src to
        //     "https://www.youtube.com/iframe_api" instead.
        //tag.src = "//www.youtube.com/iframe_api";
        tag.src = "https://www.youtube.com/iframe_api";
        //tag.src = "http://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        var player;
        function onYouTubeIframeAPIReady() {
            alert("API is ready!");
            player = new YT.Player('player', {
                height: '450',
                width: '800',
                videoId: 'mU7aJgvh9K8',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        // 4. The API will call this function when the video player is ready.
        function onPlayerReady(event) {
            event.target.playVideo();
            alert("Player is ready!");
        }

        // 5. The API calls this function when the player's state changes.
        //    The function indicates that when playing a video (state=1),
        //    the player should play for six seconds and then stop.
        var done = false;
        function onPlayerStateChange(event) {
            alert("State changed!");
            if (event.data == YT.PlayerState.PLAYING && !done) {
                setTimeout(stopVideo, 6000);
                done = true;
            }
        }
        function stopVideo() {
            player.stopVideo();
        }
    </script>
  </body>
</html>

Answer 1:

好了,测试同事的机器上,实现的问题是具体到IE我的系统上之后,我开始在浏览器设置再次寻找。 心血来潮我停用了Flash播放器(在Internet选项,程序,管理加载项)和中提琴,视频编码工作就像一个魅力。 我也注意到我的Flash播放器已经过时(9.0.45.0),并安装最新版本,它仍然工作的球员之后。

不知道为什么老Flash播放器与YouTube的API和事件的干扰 - 但显然这是罪魁祸首。



文章来源: YouTube iframe API - onReady and onStateChanged events not firing in IE9