use*_*802 3 youtube api iframe events internet-explorer-9
我一直在排除故障,并在数小时内寻找答案,但无济于事.正在逐字使用API文档中的示例代码.其他人发布和说在IE9上运行的示例代码不适合我.我已经确认在html中正确设置了doctype,我没有在CSS中使用display = none隐藏iframe,浏览器模式是IE9,文档模式是IE9标准.我的安全设置配置为中等高.甚至谷歌的示例页面在我的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>
Run Code Online (Sandbox Code Playgroud)
好吧,在同事的机器上测试并且在我的系统上意识到问题是特定于IE之后,我开始再次查看浏览器设置.一时兴起,我禁用了我的Flash播放器(在Internet选项,程序,管理插件下)和中提琴,视频代码就像一个魅力.我也注意到我的Flash播放器已经过时(9.0.45.0),在安装了最新版本的播放器之后它仍然有效.
不知道为什么旧的Flash播放器会干扰YouTube API和事件 - 但显然这是罪魁祸首.
| 归档时间: |
|
| 查看次数: |
4992 次 |
| 最近记录: |