3

我在我的 php 文件中包含了 YouTube 播放器,但播放器没有显示全屏按钮。切换到 Flash 播放器有效(无论是通过将 url 从 /embed 更改为 /v 还是通过禁用&html5=1)。我究竟做错了什么?

此处提供了一个示例:http: //jonnyrimkus.square7.ch/stuff/youtube_html5_fullscreen.php

<script>

var tag = document.createElement(\'script\');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName(\'script\')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);


function onYouTubeIframeAPIReady() {
  player = new YT.Player(\'player\', {
    playerVars: {
      \'allowfullscreen\': \'true\',                
      \'allowscriptaccess\': \'always\'
    },
    events: {
      \'onReady\': onYouTubePlayerReady,
      \'onStateChange\': playerStateChange,
      \'onError\': playerStateError
    }
  });
}
</script>   
<iframe id="player" width="425" height="356" border="0" frameborder="0" src="http://www.youtube.com/embed/36XdO9Iv9ew?enablejsapi=1&playerapiid=lastfmplayer&autoplay=1&html5=1&fs=1&origin=http://jonnyrimkus.square7.ch"></iframe>
4

3 回答 3

5

iframe如果 Youtube 播放器位于另一个没有allowfullscreen属性的播放器中,则全屏按钮也将不可见。

与谷歌文档所说的不同(截至 11/2014),fs查询字符串中的属性似乎不会影响全屏的可见性。可见性似乎受到youtube 播放器在实例化过程中默认放置的allowfullscreen属性的影响。iframe也就是说,如果您将播放器嵌入到另一个播放器中,iframe您还应该将该 iframe 标记为allowfullscreen(或其所有变体 webkitallowfullscreen mozallowfullscreen

<iframe src='' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen>
       <!-- YT player-->
</iframe>
于 2014-11-25T18:12:12.403 回答
2

你现在使用 iframe api 的方式什么都不做,api 被绑定在一个空元素上,比如<div id="player"></div>,id 是函数中的第一个参数new YT.Player

为了使用 iframe api 加载 youtube 视频,您需要在正文中使用:

<div id="player"></div>

<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);


function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
        height: 480,
        width: 640,
        videoId: "36XdO9Iv9ew",
    });
}
</script>

使用 iframe api 时,无需明确指定要启用全屏。

你也可以只使用没有 api 的 iframe,你需要在使用它时指定你想要全屏。

<iframe width="640" height="480" frameborder="0" id="player" allowfullscreen="1" title="YouTube video player" src="http://www.youtube.com/embed/36XdO9Iv9ew?enablejsapi=1"></iframe>

只使用 iframe 标签会快一点,但如果你想使用 iframe api 的额外功能,你别无选择。

带有示例的页面(另请查看来源):http: //qnet.co/yt

您也可以自己实现全屏功能(Youtube 不需要,但仍然很酷):

var goFullscreen = function(id) {
  var el = document.getElementById(id);
  if (el.requestFullScreen) {
    el.requestFullScreen();
  } else if (el.mozRequestFullScreen) {
    el.mozRequestFullScreen();
  } else if (el.webkitRequestFullScreen) {
    el.webkitRequestFullScreen();
  }
}

var leaveFullscreen = function() {
  if (document.cancelFullScreen) {
    document.cancelFullScreen();
  } else if (document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if (document.webkitCancelFullScreen) {
    document.webkitCancelFullScreen();
  }
}

并使 Youtube 播放器全屏显示:goFullscreen('player'),并离开全屏:leaveFullscreen()

requestFullscreen 和 cancelFullscreen 的不同版本是针对不同浏览器的,因为标准还没有完全完善

有关 Javascript 全屏的更多信息:http: //johndyer.name/native-fullscreen-javascript-api-plus-jquery-plugin/(相对旧文档,但仍然有效)

题外话:用php回显这样的字符串是没有用的,您可以将其粘贴到文件正文中php标签之外的文件中。

于 2013-05-16T22:39:20.110 回答
1

这在 2014 年 7 月仍然是一个问题,你只是想知道谷歌是否会解决这个问题。实际上,您可以通过使用 UA Spoofer 在客户端以另一种方式强制 Flash 播放器,例如对于 Google Chrome 浏览器,Chrome Web Store - djflhoibgkdhkhhcedjiklpkjnoahfmg 然后欺骗不理解 HTML5 的浏览器。

实际上 HTML5 视频仍然是一场灾难,视频的颗粒状尖峰锯齿状边缘和人字形图案虽然微弱,但仍然让人分心。而 Flash 是平滑、无瑕疵、可靠和锐利的边缘,具有零图案伪影。

HTML5 - 仍然大拇指向下,我不会把它强加给用户。

哦,是的,仍然全屏不会出现在像这样的嵌入中 Rick Astley - 永远不会放弃你 @ viewpure 嵌入 http://viewpure.com/dQw4w9WgXcQ

您可以使用上面的示例来摆弄和欺骗不同的浏览器插件。

于 2014-07-27T00:10:10.350 回答