4

我需要加载、销毁和重新加载YouTube Upload Widget,但不幸的是重新加载它不起作用。

我执行了以下步骤:

  1. 我按照howto- works中的描述加载了Youtube Upload Widget
  2. 我从网络摄像头捕捉视频 -有效
  3. 我使用 ) 销毁小部件widget.destroy(-有效
  4. 我从 HTML 中删除脚本元素 -有效
  5. 我按照步骤 1 重新加载 API -没有任何反应

为什么这不起作用?

4

2 回答 2

4

onYouTubeIframeAPIReady()window.YT.*当通过外部脚本加载界面时,每页只调用一次。从页面中删除<script src="http://www.youtube.com/iframe_api">元素然后重新添加它不会onYouTubeIframeAPIReady()再次触发。

如果您想销毁<iframe>包含上传小部件的 小部件,然后创建一个托管在新小部件中的新小部件,<div>那么这应该可以工作,但您不必onYouTubeIframeAPIReady()第二次从回调中执行此操作。window.YT.UploadWidget()那时已经可以使用了,所以您可以在代码中的任何地方直接使用该接口。

于 2012-10-28T01:10:23.933 回答
3

onYouTubeIframeAPIReady()仅在加载 YouTube API 时调用一次。答案是在 YouTube 的第 2 步中添加另一项检查:

if (typeof tag === "undefined") { 
  // if first run load the YT API which will call the correct functions.
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
} else {
   // if YT api already loaded, we need to call the function.
   onYouTubeIframeAPIReady();
}

祝你好运。

于 2013-04-11T14:33:12.037 回答