【问题标题】:onYouTubeIframeAPIReady function is not callingonYouTubeIframeAPIReady 函数未调用
【发布时间】:2023-03-06 23:30:01
【问题描述】:

我想调用onYouTubeIframeAPIReady 函数,但这没有触发。我在控制台中只得到frameID,但没有调用其他函数。

$(document).ready(function(){
    var player;
    var ytsrc = $('.video_holder_frame').find('iframe').attr('src');
    if (ytsrc) ytsrc = ytsrc.match(/youtube.com\/embed\/([^\\?]*)/i);
    if (!ytsrc) return;
    var frameID = 'youtube_' + ytsrc[1];    
    console.log(frameID);
    $('.video_holder_frame').find('iframe').attr('id', frameID);

    function attachToYoutubeFrame() {
        console.log("attachToYoutubeFrame");
        function onytplayerStateChange(newState) {
            console.log("onytplayerStateChange");
            console.log(newState);
        };

        player = new YT.Player(frameID, {
            events: {
                "onStateChange": onytplayerStateChange
            }
        });
    };

    function onYouTubeIframeAPIReady() {
        attachToYoutubeFrame();
    };
});

【问题讨论】:

    标签: javascript jquery youtube-api


    【解决方案1】:

    您的 onYouTubeIframeAPIReady() 函数必须在全局范围内定义。只需替换行

    function onYouTubeIframeAPIReady() {
    

    window.onYouTubeIframeAPIReady = function() {
    

    加载youtube iframe api库文件也很重要:

    <script type="text/javascript" src="https://www.youtube.com/iframe_api"></script>
    

    您的 iframe src url 还必须附加 enablejsapi=1 参数:

    http://www.youtube.com/embed/M7lc1UVf-VE?enablejsapi=1
    

    【讨论】:

      【解决方案2】:

      如果有人在这里苦苦挣扎,这就是解决它的那个...

      添加 - 因为在脚本中调用它会导致问题

      另外,请确保您使用 - window.onYouTubeIframeAPIReady = function() {

      这两件事解决了两天的愤怒。

      【讨论】:

      • 您的回答没有改进。为什么要在已经解决的问题上设置答案?如果你觉得答案不错,请点赞。
      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 2012-08-28
      • 2012-11-18
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多