我有一张表格,可以插入网页。填写完表格后,将通过使用iframe嵌入来显示YouTube视频。
当我进入YouTube视频的全屏模式时,什么也没有发生。
嵌套iframe的全屏显示是否受父iframe的尺寸限制?
我有一张表格,可以插入网页。填写完表格后,将通过使用iframe嵌入来显示YouTube视频。
当我进入YouTube视频的全屏模式时,什么也没有发生。
嵌套iframe的全屏显示是否受父iframe的尺寸限制?
Answers:
如果我理解正确,则您的iframe包含第二个iframe(YouTube上的一个)。
尝试将allowfullscreen
属性添加到“父” iframe。
为了获得完整的浏览器支持,它应如下所示:
<iframe src="your_page_url"
allowfullscreen="allowfullscreen"
mozallowfullscreen="mozallowfullscreen"
msallowfullscreen="msallowfullscreen"
oallowfullscreen="oallowfullscreen"
webkitallowfullscreen="webkitallowfullscreen"> </iframe>
fullscreen
到allow
属性的内容。例如allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
<iframe src = '...?controls=0' allowfullscreen ></iframe>
,那么它就行不通了;当我这样做时,那么它行得通时controls =1
,allowfullscreen
我怎么才能使其工作起来?controls=0
添加allowfullscreen="allowfullscreen"
和更改YouTube嵌入类型会解决我的问题。
在HTML5中,只需使用:
<iframe src="https://www.youtube.com/embed/ID" allowfullscreen />
true
如果允许通过调用框架的方法将其置于全屏模式,则可以将此属性设置为Element.requestFullscreen()
。如果未设置,则无法将元素置于全屏模式。查看Mozilla文件
在React.js框架中使用property allowFullScreen
。
请注意,还有更多指向不同方向的答案,因此希望本文能结合并简化所有采用最新有效方法的内容。
感谢有人@ orangecoat-ciallella,我在此页面上找到了对我有用的解决方案
https://www.drupal.org/node/1807158
“全屏”按钮在Ubuntu上的Chrome浏览器中不起作用。
我在D6中使用media_youtube模块。在iframe中,它使用//www.youtube.com/v/videoid此处格式的视频网址。
我使用主题预处理功能使它输出> //www.youtube.com/embed/videoidhere,它立即开始允许全屏按钮正常工作。
简而言之,如果遇到问题,请尝试将YouTube网址中的/ v /更改为/ embed /。
我们可以在视频下方获取代码。在股票期权中,我们将嵌入期权。如果单击嵌入,我们将获得该视频的代码段。
这将类似于以下代码
<iframe width="560" height="315" src="https://www.youtube.com/embed/GZh_Kj1rS74" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
上面的代码将帮助您获得全屏选项。
从嵌套iframe的内部最外面的iframe插入后,对我来说就解决了这个问题。
var outerFrame = parent.parent.parent.$('.mostOuterFrame');
parent.$('<iframe />', {
src: 'https://www.youtube.com/embed/BPlsqo2bk2M'
}).attr({'allowfullscreen':'allowfullscreen', 'frameborder':'0'
}).addClass('youtubeIframe')
.css({
'width':'675px',
'height':'390px',
'top':'100px',
'left':'280px',
'z-index':'100000',
'position':'absolute'
}).insertAfter(outerFrame);
我设法找到了一种相对干净直接的方法。要查看其工作原理,请单击我的网页:http : //developersfound.com/yde-portfolio.html并将鼠标悬停在“ Youtube Demos”链接上。
以下是两个片段,展示了如何轻松完成此操作:
我通过iFrame实现了这一目标。假设此DOM是“ yde-home.html”,这是iFrame的来源。
<!DOCTYPE html>
<html>
<head>
<title>iFrame Container</title>
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
<style type="text/css">.OBJ-1 { border:none; }</style>
<script>
$(document).ready(function() {
$('#myHiddenButton').trigger('click');
});
</script>
</head>
<body>
<section style="visibility: hidden;">
<button id="myHiddenButton" onclick="$(location).attr('href', '"http://www.youtube.com/embed/wtwOZMXCe-c?version=3&start=0&rel=0&fs=1&wmode=transparent;");">View Full Screen</button>
</section>
<section class="main-area-inner" style="background:transparent;margin-left:auto;margin-right:auto;position:relative;width:1080px;height:720px;">
<iframe src="http://www.youtube.com/embed/wtwOZMXCe-c?version=3&start=0&rel=0&fs=1&wmode=transparent;"
class="OBJ-1" style="position:absolute;left:79px;top:145px;width:1080px;height:720px;">
</iframe>
</section>
</body>
</html>
假设这是加载iFrame的DOM。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Full Screen Youtube</title>
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function() {});
</script>
</head>
<body>
<iframe name="iframe-container" id="iframe-container" src="yde-home.html" style="width: 100%; height: 100%;">
<p>Your browser does not support iFrames</p>
</iframe>
</body>
</html>
我还对照W3c验证程序进行了检查,它验证了HTML5,没有错误。
还需要注意的重要一点是:Youtube嵌入URL有时会检查以查看请求是否来自服务器,因此可能有必要设置测试环境以侦听外部IP。因此,您可能需要在路由器上设置端口转发才能使此解决方案起作用。设置端口转发后,只需从外部IP(而不是LocalHost)进行测试。请记住,某些路由器需要从LocalHost / loopback进行端口转发,但是大多数路由器使用与登录路由器相同的IP。例如,如果您的路由器登录页面为192.168.0.1,则转发端口必须使用192.168.0。在哪 可以是任何未使用的数字(您可能需要进行实验)。从该地址,您将添加测试环境监听的端口(通常为80、81、8080或8088)。