Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新加载包含Youtube Iframe播放器API的div_Javascript_Jquery_Html_Iframe_Youtube - Fatal编程技术网

Javascript 重新加载包含Youtube Iframe播放器API的div

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-直到

当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-直到它休眠(Youtube视频ID=F3WIHtOmkBg)
  • Metallica-不可原谅(Youtube视频ID=TUHFfR8hWcA)
  • Metallica-其他什么都不重要(Youtube视频ID=Tj75Arhq5ho)
我发现YT.PlayerState.PLAYING(1)正在启动,“PLAYING”被记录到控制台,但“clearTimeout()”和“refresh=undefined”似乎没有效果,因此即使在播放视频时也会重新加载文档(状态为YT.PlayerState.PLAYING(1))

我已将其用作参考

目前,我的代码如下:

<!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的新改进代码。