我有一个iframed到网页的表单。完成表单后,将使用iframe嵌入显示YouTube视频。
当我进入YouTube视频的全屏模式时,没有任何事情发生。
嵌套iframe的全屏是否受父iframe尺寸的约束?
答案 0 :(得分:127)
如果我理解正确,你的iframe包含第二个iframe(youtube one)
尝试将allowfullscreen
属性添加到" parent" iframe中。
对于完整的浏览器支持,它应如下所示:
<iframe src="your_page_url"
allowfullscreen="allowfullscreen"
mozallowfullscreen="mozallowfullscreen"
msallowfullscreen="msallowfullscreen"
oallowfullscreen="oallowfullscreen"
webkitallowfullscreen="webkitallowfullscreen"> </iframe>
答案 1 :(得分:38)
React.JS人员,请记住allowFullScreen
和frameBorder="0"
如果没有驼峰式的情况,请将这些标签剥离出来!
答案 2 :(得分:20)
添加allowfullscreen="allowfullscreen"
并更改YouTube嵌入的类型解决了我的问题。
答案 3 :(得分:11)
我必须将allowFullScreen属性添加到“父”iframe。属性的情况很重要。我不认为Firefox或Edge / IE11具有浏览器特定的allowFullScreen属性。所以它看起来像这样:
<iframe allowFullScreen='allowFullScreen' src='http://api.youtube.com/...'/>
答案 4 :(得分:10)
不建议在iframe标记中放入allowfullscreen而不将其设置为true。对于全屏问题,嵌入式YouTube视频不提供此问题的更新答案,是将标记内的allowfullscreen设置为true:
<iframe
id="player"
src="URL here"
allowfullscreen="true">
</iframe>
经过测试,可在所有浏览器上正常使用。
答案 5 :(得分:6)
在HTML5中,只需使用:
<iframe src="https://www.youtube.com/embed/ID" allowfullscreen />
如果允许通过调用true
方法将帧置于全屏模式,则可以将此属性设置为Element.requestFullscreen()
。如果未设置,则无法将元素置于全屏模式。见Mozilla Docs
在React.js framework中使用属性allowFullScreen
。
请注意,有更多答案指向不同的方向,所以希望这篇文章能够统一并简化所有提到的最新有效方法。
答案 6 :(得分:1)
我找到了一个适合我的解决方案,感谢名为@ orangecoat-ciallella的人
https://www.drupal.org/node/1807158
Ubuntu上的Chrome浏览器无法使用“全屏”按钮。
我正在使用media_youtube模块进行D6。在iframe中,它使用了模式//www.youtube.com/v/videoidhere的视频网址。
我使用主题预处理功能使其输出&gt; //www.youtube.com/embed/videoidhere 它立即开始允许全屏按钮工作。
简而言之,如果您遇到问题,请尝试将/ v /更改为/嵌入/在YouTube网址中。
答案 7 :(得分:1)
将allowfullscreen="true"
添加到iframe
<iframe src="URL here" allowfullscreen="true"> </iframe>
答案 8 :(得分:1)
我们可以在视频下方获取代码。在股票期权中,我们将嵌入期权。如果单击嵌入,我们将获得该视频的代码段。
与下面的代码相似
<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>
上面的代码将帮助您获得全屏选项。
答案 9 :(得分:0)
如果添加allowfullscreen
无济于事,请确保iframe网址中没有&fs=0
。
答案 10 :(得分:0)
最佳解决方案,并且是使用以下简单代码即可实现的最简单解决方案:
<iframe id="player" src="URL" allowfullscreen></iframe>
经过测试,可在所有浏览器上正常使用。
谢谢
答案 11 :(得分:0)
在 2021 年实现这一目标的最简单方法是:
转到您想要的 YouTube 视频,点击分享并选择 embed
。将代码复制并粘贴到您的 html 中,您就可以开始使用了!
答案 12 :(得分:-1)
我设法找到一种相对简洁的方法来做到这一点。要查看其工作情况,请点击我的网页:http://developersfound.com/yde-portfolio.html并将鼠标悬停在“Youtube演示”链接上。
下面是两个片段,展示如何轻松完成这项工作:
我用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 Validator进行了检查,它验证了HTML5没有错误。
同样重要的是要注意:Youtube嵌入URL有时会检查请求是否来自服务器,因此可能需要设置测试环境以侦听外部IP。因此,您可能需要在路由器上设置端口转发才能使此解决方案正常工作。一旦设置了端口转发,只需从外部IP而不是LocalHost进行测试。请记住,有些路由器需要从LocalHost / loopback转发端口,但大多数路由器使用与登录路由器时相同的IP。例如,如果您的路由器登录页面是192.168.0.1,那么端口转发必须使用192.168.0。哪里?可能是任何未使用的数字(您可能需要进行实验)。您可以从此地址添加测试环境监听的端口(通常为80,81,8080或8088)。
答案 13 :(得分:-1)
从嵌套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);
答案 14 :(得分:-1)
带挖孔的矿在铬上工作。通过转到Firefox
并将<about:config>
设置为full-screen-api.allow-trusted-requests-only
,使其在false
中工作。
全屏工作一次后,我可以将其设置为true,而全屏仍然工作,这很令人困惑。