Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法播放通过JS创建的iframe中嵌入的youtube视频_Javascript_Video_Iframe_Youtube Api - Fatal编程技术网

Javascript 无法播放通过JS创建的iframe中嵌入的youtube视频

Javascript 无法播放通过JS创建的iframe中嵌入的youtube视频,javascript,video,iframe,youtube-api,Javascript,Video,Iframe,Youtube Api,​你好 当我将一个youtube视频嵌入iframe时,它不是通过HTML标记制作的,而是通过JavaScript(document.createElement())创建的,视频无法播放,并且只显示错误消息“video unavailable” 其他信息: 第一个iframe没有src属性 iframe的文档是以编程方式创建的。第二 (视频嵌入)iframe是第一个iframe文档的一部分 此页面正在本地主机上运行 这种行为也发生在运行在自己域上的在线应用程序上 这种行为并不是发生在所有的视频

​你好 当我将一个youtube视频嵌入iframe时,它不是通过HTML标记制作的,而是通过JavaScript(document.createElement())创建的,视频无法播放,并且只显示错误消息“video unavailable”

其他信息:

  • 第一个iframe没有src属性
  • iframe的文档是以编程方式创建的。第二 (视频嵌入)iframe是第一个iframe文档的一部分
  • 此页面正在本地主机上运行
  • 这种行为也发生在运行在自己域上的在线应用程序上
  • 这种行为并不是发生在所有的视频中,我注意到它主要发生在音乐视频中
  • 所有视频都已启用嵌入功能,因此这不是无法播放这些视频的原因

index.html:

<html>
<div>
<iframe id="myFrame" style="width: 600px ; height: 350px" src="iframeVideo.html" frameborder="1"
allowfullscreen=""></iframe>
</div>
<div id="video"></div>

<script>
var container = document.getElementById("video");
var frame = document.createElement("iframe");
frame.style.width = "600px";
frame.style.height = "400px";

frame.onload = function () {
if (frame.contentDocument) {
var fdoc = frame.contentDocument;
var vframe = fdoc.createElement("iframe");

vframe.src = "https://www.youtube.com/embed/NEIwl93Yr8o";
vframe.setAttribute("frameborder", "0");
vframe.setAttribute("allowfullscreen", "");
vframe.style.width = "500px";
vframe.style.height = "281px";

fdoc.body.appendChild(vframe);
}
}
container.appendChild(frame);
</script>

</html>
<html>
<iframe id="myFrame" style="width: 500px ; height: 281px" src="https://www.youtube.com/embed/NEIwl93Yr8o" frameborder="0"
allowfullscreen=""></iframe>
</html>

var container=document.getElementById(“视频”);
var frame=document.createElement(“iframe”);
frame.style.width=“600px”;
frame.style.height=“400px”;
frame.onload=函数(){
if(frame.contentDocument){
var fdoc=frame.contentDocument;
var vframe=fdoc.createElement(“iframe”);
vframe.src=”https://www.youtube.com/embed/NEIwl93Yr8o";
setAttribute(“frameborder”,“0”);
setAttribute(“allowfullscreen”,即“);
vframe.style.width=“500px”;
vframe.style.height=“281px”;
fdoc.body.appendChild(vframe);
}
}
子容器(框架);
iframeVideo.html:

<html>
<div>
<iframe id="myFrame" style="width: 600px ; height: 350px" src="iframeVideo.html" frameborder="1"
allowfullscreen=""></iframe>
</div>
<div id="video"></div>

<script>
var container = document.getElementById("video");
var frame = document.createElement("iframe");
frame.style.width = "600px";
frame.style.height = "400px";

frame.onload = function () {
if (frame.contentDocument) {
var fdoc = frame.contentDocument;
var vframe = fdoc.createElement("iframe");

vframe.src = "https://www.youtube.com/embed/NEIwl93Yr8o";
vframe.setAttribute("frameborder", "0");
vframe.setAttribute("allowfullscreen", "");
vframe.style.width = "500px";
vframe.style.height = "281px";

fdoc.body.appendChild(vframe);
}
}
container.appendChild(frame);
</script>

</html>
<html>
<iframe id="myFrame" style="width: 500px ; height: 281px" src="https://www.youtube.com/embed/NEIwl93Yr8o" frameborder="0"
allowfullscreen=""></iframe>
</html>

上传到YouTube的人已将示例代码中的视频设置为不可嵌入。您可以通过在YouTube()上成功地观看视频来看到这一点,但不能直接转到(请注意,单击“播放”按钮时,会显示“视频不可用”)。例如,您可以将其与通过单击播放按钮可以成功观看的嵌入式程序URL进行比较


某些YouTube视频无法嵌入,除非您控制了相应的YouTube帐户,否则对此您无能为力(除非要求所有者使其可嵌入)。

检查浏览器控制台(F12)如果存在错误或警告。只有此警告:与位于的跨站点资源关联的cookie未设置
SameSite
属性。如果Chrome的未来版本设置为
SameSite=None
Secure
,则只能提供带有跨站点请求的cookie。您可以在“应用程序>存储>cookies”下查看开发人员工具中的cookies,并查看更多详细信息,还可以查看“网络”选项卡,查看请求的响应-密切关注iframe的响应。您可能需要在iframe中添加一个额外的参数;IIRC,iframe中视频i的URL应该是:
https://www.youtube.com/embed/NEIwl93Yr8o?origin=http:yourwebsite.com
。我已经尝试使用youtube提供的参数,我也在查看请求,但没有找到任何有用的信息来说明问题所在或解决方案。(可能我看错了什么)其他的选择可能是:将你的问题发布到-它可能有一些关于音乐视频或
文档的限制。createElement
=你需要用这种方式创建DOM元素吗?-尝试使用页面上已有的DOM/html控件。也许这是iframe内部变量的初始化…我之前已经用自己上传到youtube的视频尝试过了,在youtube上我启用了嵌入,但它不起作用。所以我不认为这就是为什么一些视频不起作用的原因。(当您单击共享->嵌入视频下时)@RadekM。请尝试转到并右键单击,复制嵌入代码,将其粘贴到最简单的网页中,然后尝试播放。它不起作用。当您单击“播放”时,它会显示“视频不可用”。也许对你来说不一样;我不知道你在哪里-也许是地理问题。我在美国西海岸,视频在本地主机上的简单静态HTML页面上为我工作,通过xampp Apache@avocadatoria运行,我在欧洲