Javascript 重新加载包含Youtube Iframe播放器API的div
当onStateChange的值为YT.PlayerState.ENDED(0)或YT.PlayerState.CUED(5)时,我尝试每10秒重新加载一次文档 如果YT.PlayerState不是YT.PlayerState.ENDED(0)或YT.PlayerState.CUED(5),则不会重新加载文档 问题是,即使YT.PlayerState没有结束(0)或提示(5),文档也会重新加载 下面的代码显示来自Youtube的以下列表中的随机Metallica视频:Javascript 重新加载包含Youtube Iframe播放器API的div,javascript,jquery,html,iframe,youtube,Javascript,Jquery,Html,Iframe,Youtube,当onStateChange的值为YT.PlayerState.ENDED(0)或YT.PlayerState.CUED(5)时,我尝试每10秒重新加载一次文档 如果YT.PlayerState不是YT.PlayerState.ENDED(0)或YT.PlayerState.CUED(5),则不会重新加载文档 问题是,即使YT.PlayerState没有结束(0)或提示(5),文档也会重新加载 下面的代码显示来自Youtube的以下列表中的随机Metallica视频: Metallica-直到
- Metallica-直到它休眠(Youtube视频ID=F3WIHtOmkBg)
- Metallica-不可原谅(Youtube视频ID=TUHFfR8hWcA)
- Metallica-其他什么都不重要(Youtube视频ID=Tj75Arhq5ho)
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
// Youtube, F3WIHtOmkBg - Metallica - Until it sleeps
// Youtube, TUHFfR8hWcA - Metallica - The unforgiven
// Youtube, Tj75Arhq5ho - Metallica - Nothing else matters
var videoArray = [
'F3WIHtOmkBg',
'TUHFfR8hWcA',
'Tj75Arhq5ho'];
var randomIndex = Math.floor(Math.random() * videoArray.length);
var randomVideoId = videoArray[randomIndex];
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function refresh() { setTimeout(function() {
window.location = window.location.pathname;
player = new YT.Player('player', {
width: '550',
height: '331',
videoId: randomVideoId,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}, 10000);
}
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
width: '550',
height: '331',
videoId: randomVideoId,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.stopVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
refresh();
console.log('Ended');
}
if (event.data == YT.PlayerState.PLAYING) {
clearTimeout();
refresh = undefined;
console.log('Playing');
}
if (event.data == YT.PlayerState.PAUSED) {
clearTimeout();
refresh = undefined;
console.log('Paused');
}
if (event.data == YT.PlayerState.BUFFERING) {
clearTimeout();
refresh = undefined;
console.log('Buffering');
}
if (event.data == YT.PlayerState.CUED) {
refresh();
console.log('Cued');
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</head>
<boby>
<div id="youtubetest">
<div id="player"></div>
</div>
<div id="currenttime">
<script>
var now = new Date();
var datetime = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate();
datetime += ' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds();
document.write('Current time is: ' + now);
</script>
</div>
</html>
//Youtube,F3WIHtOmkBg-Metallica-直到它睡着
//Youtube,TUHFfR8hWcA-Metallica-不可原谅
//Youtube,Tj75Arhq5ho-Metallica-其他一切都无关紧要
var视频阵列=[
“F3WIHtOmkBg”,
“TUHFfR8hWcA”,
“Tj75Arhq5ho”];
var randomIndex=Math.floor(Math.random()*videoArray.length);
var randomVideoId=视频阵列[randomIndex];
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
var播放器;
函数refresh(){setTimeout(函数()){
window.location=window.location.pathname;
player=新的YT.player('player'{
宽度:'550',
高度:'331',
videoId:randomVideoId,
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}, 10000);
}
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
宽度:'550',
高度:'331',
videoId:randomVideoId,
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
函数onPlayerReady(事件){
event.target.stopVideo();
}
函数onPlayerStateChange(事件){
如果(event.data==YT.PlayerState.end){
刷新();
console.log('end');
}
if(event.data==YT.PlayerState.PLAYING){
clearTimeout();
刷新=未定义;
console.log('Playing');
}
如果(event.data==YT.PlayerState.PAUSED){
clearTimeout();
刷新=未定义;
console.log('Paused');
}
if(event.data==YT.PlayerState.BUFFERING){
clearTimeout();
刷新=未定义;
log(“缓冲”);
}
if(event.data==YT.PlayerState.CUED){
刷新();
console.log('Cued');
}
}
函数stopVideo(){
player.stopVideo();
}
var now=新日期();
var datetime=now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate();
datetime++'+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds();
document.write('当前时间为:'+现在);
当您在clearInterval之前放置一个console.log('yo!')时,它会被记录下来吗?什么是myTimer()?不要终止myTimer()。这只是我之前的一些测试。我在开场白中添加了带有console.logging的新改进代码。