【问题标题】:Youtube iFrame API Passing data from onYouTubeIframeAPIReady to onPlayerStateChange functionYoutube iFrame API 将数据从 onYouTubeIframeAPIReady 传递到 onPlayerStateChange 函数
【发布时间】:2022-01-24 21:13:42
【问题描述】:

我需要初始化 Youtube iframe 视频列表

因为有很多 youtube 视频,并且列表可以从管理站点更改,我需要使其动态化,它使用类而不是 id

这是当前代码

const players = [];

onYouTubeIframeAPIReady(0);
onYouTubeIframeAPIReady(1);

function onYouTubeIframeAPIReady(index) {
    players[index] = new YT.Player($('.wow_youtube_video')[index], {
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

function onPlayerStateChange(event) {
    
    // play
    if(event.data == 1){
        action = 'play';
    }

    // pause
    if(event.data == 2){
        action = 'pause';
    }

    if(event.data == 1 || event.data == 2){
        dataLayer.push({
            'event': 'trackEvent',
            'eventDetails.category': 'videos',
            'eventDetails.action': action,
            'eventDetails.label': players[0].getVideoData().title // players[0] supposedly be players[index] but don't know how to pass the index balue from above function to this function
            'videoName': players[0].getVideoData().title, //video name
            'videoType': 'video on demand' //video type
        });

    }

}

如上图所示,倒数第 8 行

'eventDetails.label': players[0].getVideoData().title,

这段代码在这里

players[0] 应该是 players[index] 但我不知道如何传递索引值

players[index] = new YT.Player($('.wow_youtube_video')[index], {
        events: {
            'onStateChange': onPlayerStateChange
        }
    });

onPlayerStateChange 函数

这样做的目的是能够携带索引值,以便代码可以是动态的,因此我只需将类名 wow_youtube_video 放在任何 youtube iframe 上即可使其工作

感谢您的帮助,谢谢

【问题讨论】:

    标签: javascript youtube youtube-api javascript-objects youtube-iframe-api


    【解决方案1】:

    在函数onYouTubeIframeAPIReady添加这个

    players[index] = new YT.Player($('.wow_youtube_video')[index], {
        events: {
            'onStateChange': onPlayerStateChange.bind(index)
        }
    });
    

    现在您可以通过

    onPlayerStateChange 中获得index
    function onPlayerStateChange(event) {
       let index = this;
       console.log(index);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多