我在 Windows 8 应用程序(html/javascript)中嵌入了 youtube 播放器。我需要与玩家互动(播放/暂停等)。我在此处的入门部分中复制/粘贴了示例,但未触发 onYouTubeIframeAPIReady。我为相同的代码创建了本地 html 文件,并在 chrome 中启动了 html 文件,但结果相同。当我使用 w3schools 尝试页面时,此代码工作正常。我在这里找到了与 youtube 播放器交互的更好示例。我在桌面本地复制了 index.js、index.html 和 index.css。尝试从桌面运行 index.html 不起作用(基本上 onYouTubeIframeAPIReady 未触发)。
我的最终目标是知道视频何时在 win8 javascript/html 应用程序中播放完毕。我试图让上面的例子首先在本地工作,但到目前为止还没有成功。
我感谢您的帮助!!!!
PS:关于stackoverflow的相关问题很少(例如:http://stackoverflow.com/questions/12844668/controlling-an-iframe-youtube-player-within-a-windows-8-metro-js-app),但我无法找到答案。由于我的声誉低,我也无法发表评论:)。
编辑:这是我在本地使用的实际HTML :
<!DOCTYPE html>
<html>
<body>
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>
<script>
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "//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() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'u1zgFlCw8Aw',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.playVideo();
}
// 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) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>