Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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视频何时结束播放?_Javascript_Flash_Api_Actionscript_Youtube - Fatal编程技术网

Javascript 如何检测youtube视频何时结束播放?

Javascript 如何检测youtube视频何时结束播放?,javascript,flash,api,actionscript,youtube,Javascript,Flash,Api,Actionscript,Youtube,我在一个有大量嵌入youtube视频的网站上工作,客户希望在视频停止播放时显示一个弹出窗口 我查看了youtube api,似乎有一种方法可以检测视频何时结束: 但是我不能像他们在那个页面上提到的那样嵌入视频,因为视频都已经在这个网站上了(数千个是通过粘贴嵌入代码手动添加的) 有没有一种方法可以在不更改任何现有视频的情况下检测这些视频的结束(使用javascript)?您可能需要在所有页面上包含一个脚本,该脚本执行以下操作。。。 1.查找youtube iframe:按宽度和高度按标题搜索,或

我在一个有大量嵌入youtube视频的网站上工作,客户希望在视频停止播放时显示一个弹出窗口

我查看了youtube api,似乎有一种方法可以检测视频何时结束:

但是我不能像他们在那个页面上提到的那样嵌入视频,因为视频都已经在这个网站上了(数千个是通过粘贴嵌入代码手动添加的)


有没有一种方法可以在不更改任何现有视频的情况下检测这些视频的结束(使用javascript)?

您可能需要在所有页面上包含一个脚本,该脚本执行以下操作。。。 1.查找youtube iframe:按宽度和高度按标题搜索,或在其源文件中查找www.youtube.com。你可以通过。。。 -按for in循环遍历window.frames,然后按属性筛选出

  • 在当前页面的iframe中插入jscript,添加onYoutubePlayerReady必须包含函数

  • 添加事件侦听器等


  • 希望这有帮助

    这可以通过youtube播放器API实现:

    工作示例:

        <div id="player"></div>
    
        <script src="http://www.youtube.com/player_api"></script>
    
        <script>
    
            // create youtube player
            var player;
            function onYouTubePlayerAPIReady() {
                player = new YT.Player('player', {
                  width: '640',
                  height: '390',
                  videoId: '0Bmhjf0rKe8',
                  events: {
                    onReady: onPlayerReady,
                    onStateChange: onPlayerStateChange
                  }
                });
            }
    
            // autoplay video
            function onPlayerReady(event) {
                event.target.playVideo();
            }
    
            // when video ends
            function onPlayerStateChange(event) {        
                if(event.data === 0) {          
                    alert('done');
                }
            }
    
        </script>
    
    
    //创建youtube播放器
    var播放器;
    函数onYouTubePlayerAPIReady(){
    player=新的YT.player('player'{
    宽度:“640”,
    高度:“390”,
    videoId:'0Bmhjf0rKe8',
    活动:{
    onReady:onPlayerReady,
    onStateChange:onPlayerStateChange
    }
    });
    }
    //自动播放视频
    函数onPlayerReady(事件){
    event.target.playVideo();
    }
    //视频结束时
    函数onPlayerStateChange(事件){
    如果(event.data==0){
    警报(“完成”);
    }
    }
    
    我唯一的建议是通过编程方式更改嵌入项,使其包含
    enablejsapi=1
    。如果它们在数据库中,那么更改
    src
    属性应该相当容易。如果将正则表达式静态插入HTML文件中,您可能需要一些正则表达式。您是如何将其与一页上的多个视频集成的?@motoxer4533我不必在同一页上处理多个视频,但每页仅处理一个视频。不确定API是否允许创建多个播放机并检测其各自的端点。为多个播放机进行设置应该不难-只需设置多个var player1、var player2、var player 3等,然后使用每个新的var重复运行设置代码以确保可读性,检查状态时,我建议YT.PlayerState.ENDED。如果您只是想在视频准备好后立即播放,API现在提供了
    autoplay
    参数——将
    playerBars:{autoplay:'1'}
    添加到初始化参数中。有关详细信息,请参阅。由于跨域规则的原因,不确定这是否可行