嵌入YouTube iframe-全屏


76

我有一张表格,可以插入网页。填写完表格后,将通过使用iframe嵌入来显示YouTube视频。

当我进入YouTube视频的全屏模式时,什么也没有发生。

嵌套iframe的全屏显示是否受父iframe的尺寸限制?

html  iframe 


1
您也许可以制作一个有效的JSFiddle?
mbomb007'1

您想在全萤幕上做什么
sanoj lawrence

Answers:


158

如果我理解正确,则您的iframe包含第二个iframe(YouTube上的一个)。
尝试将allowfullscreen属性添加到“父” iframe。

为了获得完整的浏览器支持,它应如下所示:

<iframe src="your_page_url" 
        allowfullscreen="allowfullscreen"
        mozallowfullscreen="mozallowfullscreen" 
        msallowfullscreen="msallowfullscreen" 
        oallowfullscreen="oallowfullscreen" 
        webkitallowfullscreen="webkitallowfullscreen"> </iframe> 

42
您只需要<iframe src =“ url ” frameborder =“ 0” allowfullscreen> </ iframe>,不建议使用其他一些属性。
ViliusL,2015年

2
在新的YouTube代码中,您必须添加fullscreenallow属性的内容。例如allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
Taras

当我这样做时<iframe src = '...?controls=0' allowfullscreen ></iframe>,那么它就行不通了;当我这样做时,那么它行得通时controls =1allowfullscreen我怎么才能使其工作起来?controls=0
mehmood khan

54

React.JS人们,记住allowFullScreenframeBorder="0"

没有骆驼的情况下,反应剥夺了这些标签!


8
的用法allowFullScreen="allowFullScreen"frameBorder="0"解决了这个问题。
卡兰·库玛

31

添加allowfullscreen="allowfullscreen"和更改YouTube嵌入类型会解决我的问题。


1
还需要在父iFrame上添加allowfullscreen =“ allowfullscreen”

2
这对我不起作用。有没有其他选择@Neil?
SE_User 16'Oct

我在ReactJs中面临这个问题。它解决了我的问题。
哈比卜

12

我必须将allowFullScreen属性添加到“父” iframe。属性的大小写确实很重要。我认为Firefox或Edge / IE11没有特定于浏览器的allowFullScreen属性。所以看起来像这样:

<iframe allowFullScreen='allowFullScreen' src='http://api.youtube.com/...'/>


11

在HTML5中,只需使用:

<iframe src="https://www.youtube.com/embed/ID" allowfullscreen /> 

true如果允许通过调用框架的方法将其置于全屏模式,则可以将此属性设置为Element.requestFullscreen()。如果未设置,则无法将元素置于全屏模式。查看Mozilla文件

React.js框架中使用property allowFullScreen

请注意,还有更多指向不同方向的答案,因此希望本文能结合并简化所有采用最新有效方法的内容。


10

不建议将allowfullscreen放到iframe标记中而不将其设置为true。对于全屏问题,嵌入式YouTube视频不提供此问题的更新答案,是将标记内的allowfullscreen设置为true:

<iframe 
   id="player" 
   src="URL here" 
   allowfullscreen="true">
</iframe>

经过测试,可在所有浏览器上正常使用。


5

最佳解决方案,并通过使用这种简单的代码来实现这一目标的最简单的一个:

<iframe id="player" src="URL" allowfullscreen></iframe>

经过测试,可在所有浏览器上正常使用。

谢谢


将allowfullscreen放到iframe中已被弃用。您需要将其设置为true才能起作用。
珍妮·维

1

感谢有人@ 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 /。


1

突出部分添加allowfullscreen="true"iframe

  <iframe src="URL here" allowfullscreen="true"> </iframe>

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>

上面的代码将帮助您获得全屏选项。


0

如果添加allowfullscreen没有帮助,请确保您没有&fs=0iframe网址。


我们不必再设置fs的值了,因为默认情况下,fs的值为1,这可以显示扩展按钮。我尝试将allowfullscreen放到iframe内,但不再起作用。更新的修补程序是将allowfullscreen的值设置为true。
珍妮·维

-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);

-1

我设法找到了一种相对干净直接的方法。要查看其工作原理,请单击我的网页: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&amp;start=0&amp;rel=0&amp;fs=1&amp;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&amp;start=0&amp;rel=0&amp;fs=1&amp;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)。


-1

注意到我的在铬上工作。Firefox通过进入<about:config>并设置full-screen-api.allow-trusted-requests-only为来使它起作用false

全屏工作一次后,我可以将其设置为true,而全屏仍然工作,这非常令人困惑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.