【问题标题】:youtube javascript api doesn't trigger callbackyoutube javascript api不会触发回调
【发布时间】:2011-02-28 00:58:32
【问题描述】:

我正在尝试使用 youtube 的 javascript api,但在初始化它/在它准备好时获取回调时遇到问题。 Api 文档可以在here 找到。

我从 youtube 提供的 json 中获取视频并像这样嵌入它们:

//insert flash object in video element
        $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
                                   '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1"></param>' +
                                   '<param name="allowFullScreen" value="true"></param>' +
                                   '<param name="allowscriptaccess" value="always"></param>' +
                                   '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' +
                                   '</object>');

请注意,我将“enablejsapi=1”添加到应该启用 javascript api 的 url。但是,当我监听 api 准备好的回调时,即:

//set player functionality when javascript api is available
  function onYouTubePlayerReady(playerId) {
    alert('api is ready!');
  }

它永远不会被触发。页面上的所有其他内容(包括 youtube 视频)都可以正确加载,甚至我在视频 url (showinfo=0) 中传递的其他参数也可以正常工作。是什么赋予了?有人看到我的错误吗?非常感谢所有帮助...

【问题讨论】:

  • 我知道 youtube 推荐 'swfObject',但在我的情况下它不是一个选项...
  • 我找到了解决这个问题的方法(仅使用缩略图就可以满足我的需要),但我仍然想知道答案:)

标签: javascript jquery callback youtube youtube-api


【解决方案1】:

尝试在 URL 中添加 &amp;playerapiid=THEPLAYERIDYOUWANTPASSEDIN。这作为“playerId”参数发送到回调。

//insert flash object in video element
        $(video_elm_arr[i]).append('<object id="video_' + i + '" width="' + width + '" height="' + height + '">' + 
                                   '<param name="movie" value="' + video_url + '?showinfo=0&enablejsapi=1&playerapiid=' + i + '"></param>' +
                                   '<param name="allowFullScreen" value="true"></param>' +
                                   '<param name="allowscriptaccess" value="always"></param>' +
                                   '<embed src="' + video_url + '?showinfo=0&enablejsapi=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + width + '" height="' + height + '"></embed>' +
                                   '</object>');

【讨论】:

    【解决方案2】:

    页面是否从服务器提供(即,不是从本地机器)?如果页面在本地提供,则 Youtube(或一般的 Flash)不允许与 JavaScript 交互。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 2011-01-06
      • 2014-07-13
      • 2014-01-26
      • 2010-10-09
      • 1970-01-01
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多