gpt4 book ai didi

api - YouTube iframe API - onReady 和 onStateChanged 事件在 IE9 中未触发

转载 作者:行者123 更新时间:2023-12-02 13:29:53 25 4
gpt4 key购买 nike

我几个小时以来一直在进行故障排除并寻找答案,但无济于事。 API 文档中的示例代码正在逐字使用。其他人发布并说适用于 IE9 的示例代码并不适合我。我已经确认 doctype 在 html 中正确设置,我没有在 CSS 中使用 display=none 隐藏 iframe,浏览器模式是 IE9,文档模式是 IE9 标准。我的安全设置配置为中高。即使 google 的示例页面在我的 IE9 浏览器中也不起作用。

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

当我单击“播放”尝试播放电影(在上面的链接中)时,我在 IE 的脚本调试控制台中收到各种错误。第一个错误如下所示:

SCRIPT5009:“视频”未定义

请帮忙!我的示例代码如下。电影加载后,我看到“API 已就绪”警报,但 IE9 中不会触发任何其他事件。我只是不知道我错过了什么!如果我不尽快解决这个问题,我将不得不放弃在我的项目中使用 YouTube 进行 html5 视频播放。

<!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>

最佳答案

好吧,在同事的机器上进行测试并意识到问题是我系统上的 IE 所特有的后,我开始再次查看浏览器设置。我一时兴起禁用了我的 Flash 播放器(在“Internet 选项”、“程序”、“管理附加组件”下)和 viola,视频代码就像一个魅力。我还注意到我的 Flash 播放器已经过时 (9.0.45.0),安装最新版本的播放器后它仍然可以工作。

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

关于api - YouTube iframe API - onReady 和 onStateChanged 事件在 IE9 中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com