Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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 使用Flickity在下一张幻灯片上暂停YouTube视频_Javascript_Youtube_Carousel_Flickity - Fatal编程技术网

Javascript 使用Flickity在下一张幻灯片上暂停YouTube视频

Javascript 使用Flickity在下一张幻灯片上暂停YouTube视频,javascript,youtube,carousel,flickity,Javascript,Youtube,Carousel,Flickity,我正在使用创建一个包含图像、视频和youtube嵌入的滑块(使用Wordpress高级自定义字段) 我想暂停播放flickity活动的视频(下一张幻灯片) 我的代码适用于视频嵌入,但我似乎无法暂停YouTube播放器 滑块中有多个YouTube幻灯片,在iFrame中,高级自定义字段不允许我给出类名 简化的HTML结构: <div class="carousel"> <img src="image" /> <div class="video">

我正在使用创建一个包含图像、视频和youtube嵌入的滑块(使用Wordpress高级自定义字段)

我想暂停播放flickity活动的视频(下一张幻灯片)

我的代码适用于视频嵌入,但我似乎无法暂停YouTube播放器

滑块中有多个YouTube幻灯片,在iFrame中,高级自定义字段不允许我给出类名

简化的HTML结构:

<div class="carousel">
    <img src="image" />
    <div class="video"><video src="somevideo" /></div>
    <div class="video"><iframe>YOUTUBE-EMBED</iframe></div>
</div>
暂停功能适用于嵌入式,但不适用于。有什么想法吗

我试过:

    $('.video').find('iframe').each(function() {
        ytplayer.pauseVideo();
        this.pauseVideo();
    });

…运气不好

有什么想法吗


干杯

我使用了像这样的高级自定义字段oembed设置来添加“enablejsapi”:


这是有效的。

奥斯蒙德·索利赫赫格达的答案对我来说不适用于多个YouTube视频,所以我对其进行了轻微的调整,并为当前视频添加了自动播放功能

$slider.on( 'select.flickity', function( event, index ) {

            $('iframe').each(function( i, el ) {

                if( i == index ){
                    $(this)[0].contentWindow.postMessage('{"event":"command","func":"' + 'playVideo' + '","args":""}', '*'); 
                } else {
                    $(this)[0].contentWindow.postMessage('{"event":"command","func":"' + 'pauseVideo' + '","args":""}', '*'); 
                }
                
            });   

        });

首先,您可能没有任何
ytplayer
实例,您需要先创建这些实例。听起来是对的@04FS。你能帮我找到创建实例的正确方向吗?我想我已经这样做了,通过指向文档,文档中甚至有示例…?如果你需要的不止这些,你首先需要描述你的具体问题是什么。啊,但是我确实在这里发现了一个问题,而不是
$slider.on('select.flickity',
它应该是
$slider.on('change.flickity',
),否则它会在每次调整窗口大小时开始播放视频!(因为很明显,由于某种原因,每次调整旋转木马大小时,幻灯片都是“选中的”)
    if (ytplayer) {
        ytplayer.pauseVideo();
    }
<?php
$iframe = get_sub_field('url');
// use preg_match to find iframe src
preg_match('/src="(.+?)"/', $iframe, $matches);
$src = $matches[1];
// add extra params to iframe src
$params = array(
    'enablejsapi' => 1
);
$new_src = add_query_arg($params, $src);
$iframe = str_replace($src, $new_src, $iframe);
// add extra attributes to iframe html
$attributes = 'class="youtube"';

$iframe = str_replace('></iframe>', ' ' . $attributes . '></iframe>', $iframe);

echo $iframe;
?>
var $carousel = $('.content-fields-carousel').flickity();
$carousel.on( 'select.flickity', function( event, index ) {
    $('.video').find('video').each(function() {
        this.pause();
    });
    $('iframe')[0].contentWindow.postMessage('{"event":"command","func":"' + 'pauseVideo' + '","args":""}', '*');    
});
$slider.on( 'select.flickity', function( event, index ) {

            $('iframe').each(function( i, el ) {

                if( i == index ){
                    $(this)[0].contentWindow.postMessage('{"event":"command","func":"' + 'playVideo' + '","args":""}', '*'); 
                } else {
                    $(this)[0].contentWindow.postMessage('{"event":"command","func":"' + 'pauseVideo' + '","args":""}', '*'); 
                }
                
            });   

        });