我需要加载,销毁和重新加载YouTube上传小部件,但不幸的是,重新加载它不起作用。
我执行了以下步骤:
- 我按照howto - Works 中所述加载了YouTube上传小部件
- 我从网络摄像头捕获了一个视频 - works
- 我使用
widget.destroy(
) - Works - i从HTML - Works 中删除脚本元素
- 我像步骤1 -中重新加载API
为什么不起作用?
onYouTubeIframeAPIReady()
仅在每页上一次调用一次,当window.YT.*
接口通过外部脚本加载时。从页面中删除<script src="http://www.youtube.com/iframe_api">
元素,然后重新添加它不会再次触发onYouTubeIframeAPIReady()
。
如果要销毁包含上传小部件的<iframe>
,然后创建一个在新的<div>
中托管的新窗口小部件,则应该有效,但是您不必第二次从onYouTubeIframeAPIReady()
回调中进行操作。window.YT.UploadWidget()
当时已经可用,因此请随时直接从代码中的任何地方使用该接口。
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();
}
祝你好运。