有没有办法使HTML5video全屏?
有没有办法使用HTML5 <video>
标签播放video全屏?
如果这是不可能的,是否有人知道是否有这个决定的理由?
HTML 5没有提供制作全屏video的方法,但并行全屏规范提供了requestFullScreen
方法,允许将任意元素(包括<video>
元素)制作为全屏。
它在许多浏览器中都有实验支持 。
原始答案:
从HTML5规范 (撰写本文时:2009年6月):
用户代理不应该提供公共API来使video全屏显示。 脚本与精心制作的video文件相结合,可能会诱使用户认为系统模式对话框已经显示,并提示用户input密码。 还有“仅仅”烦恼的危险,当点击链接或浏览页面时,页面将启动全屏video。 相反,可以提供用户代理特定的接口特征,以容易地让用户获得全屏播放模式。
浏览器可以提供一个用户界面,但不应该提供一个可编程的界面。
请注意,上述警告已从规范中删除。
这里的大部分答案已经过时了。
现在可以使用Fullscreen API将任何元素放到全屏中,尽pipe它仍然相当混乱,因为您不能在所有浏览器中调用div.requestFullScreen()
,但必须使用浏览器特定的前缀方法。
我创build了一个简单的包装screenfull.js ,使其更易于使用Fullscreen API。
目前的浏览器支持是:
- Chrome 15+
- Firefox 10+
- Safari 5.1+
请注意,许多移动浏览器似乎还不支持全屏选项 。
Safari通过webkitEnterFullscreen
支持它。
Chrome也应该支持它,因为它也是WebKit,但是出错了。
Firefox的 Chris Blizzard表示,他们将推出自己的全屏版本,这将允许任何元素进入全屏。 如帆布
歌剧院的菲利普·杰根斯特(Philip Jagenstedt)表示,他们会在后来的版本中支持。
是的,HTML5video规范说不支持全屏,但是由于用户需要它,并且每个浏览器都将支持,所以规范将会改变。
webkitEnterFullScreen();
这需要在video标签元素上调用,例如,全屏显示页面上的第一个video标签use:
document.getElementsByTagName('video')[0].webkitEnterFullscreen();
注意:这是过时的答案,不再相关。
我认为,如果我们想要有一个开放的方式来浏览我们的浏览器中的video,而没有任何封闭的源代码插件(以及Flash插件历史中出现的所有安全漏洞…)。 标签必须find一种方法来激活全屏幕..我们可以像处理闪光灯一样:要做全屏,它必须用鼠标左键激活,没有别的,我的意思是这是不可能通过ActionScript启动全屏加载闪光灯的例子。
我希望我已经清楚了:毕竟,我只是一个法国IT学生,不是英文诗人:)
再见!
在Firefox和Chrome(最新版本)中都可以使用可编程的全屏模式。 好消息是这里有一个规范草案:
http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
现在您仍然必须处理供应商前缀,但所有的实施细节正在MDN站点中进行跟踪:
来自CSS
video { position: fixed; right: 0; bottom: 0; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: -100; background: url(polina.jpg) no-repeat; background-size: cover; }
Firefox 3.6具有HTML5video的全屏选项,右键点击video并select“全屏”。
最新的Webkit夜生活也支持全屏HTML5video,每晚最新尝试Sublime播放器 ,并在select全屏选项时按住Cmd / Ctrl键。
我想铬/歌剧也将支持这样的事情。 希望IE9也将支持全屏HTML5video。
WebKit通过webkitEnterFullscreen支持这一点。
许多现代的网页浏览器已经实现了一个FullScreen API,允许你将全屏聚焦到特定的HTML元素。 这对于在完全身临其境的环境中显示video等交互式媒体非常有用。
为了获得全屏button的工作,你需要设置另一个事件监听器,当点击button时将调用requestFullScreen()
函数。 为确保在所有支持的浏览器上都能正常工作,您还需要检查requestFullScreen()
是否可用,如果不是,则回mozRequestFullScreen
供应商前缀版本( mozRequestFullScreen
和webkitRequestFullscreen
)。
var elem = document.getElementById("myvideo"); if (elem.requestFullscreen) { elem.requestFullscreen(); } else if (elem.msRequestFullscreen) { elem.msRequestFullscreen(); } else if (elem.mozRequestFullScreen) { elem.mozRequestFullScreen(); } else if (elem.webkitRequestFullscreen) { elem.webkitRequestFullscreen(); }
参考: – https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode参考:; – http://blog.teamtreehouse.com/building-custom-controls-for-html5 -video
您可以将宽度和高度更改为100%,但不会覆盖浏览器镶边或操作系统shell。
devise决定是因为HTML存在于浏览器窗口内部。 Flash插件不在窗口内,所以可以全屏显示。
这是有道理的,否则你可以制作覆盖shell的img标签,或者制作h1标签,这样整个屏幕就是一个字母。
不,不可能在HTML5全屏video。如果你想知道原因,你是幸运的,因为全屏争吵是争取现在。 请参阅WHATWG邮件列表并查找“video”一词。 我个人希望他们在HTML 5中提供全屏API。
另一种解决scheme是浏览器只需在上下文菜单中提供这个选项。 没有必要有Javascript来做到这一点,但我可以看到什么时候会有用。
同时,另一种解决scheme就是最大化窗口(Javascript可以提供屏幕尺寸),然后最大化其中的video。 给它一个去,然后看看结果是否是您的用户可以接受的。
完整的解决scheme:
function bindFullscreen(video) { $(video).unbind('click').click(toggleFullScreen); } function toggleFullScreen() { if (!document.fullscreenElement && // alternative standard method !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) { // current working methods if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); } else if (document.documentElement.msRequestFullscreen) { document.documentElement.msRequestFullscreen(); } else if (document.documentElement.mozRequestFullScreen) { document.documentElement.mozRequestFullScreen(); } else if (document.documentElement.webkitRequestFullscreen) { document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); } } else { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } } }
HTML 5video确实在Safari的最新版本中全屏显示,尽pipe我不确定它是如何在技术上完成的。
是。 那么HTML5video会发生什么呢?你只要把<video>
标签放在浏览器中,就可以给它自己的用户界面,从而可以全屏观看。 它确实使我们的用户生活更好,而不必看到一些使用Flash的开发人员可以制作的“艺术”。它也增加了平台的一致性,这很好。
Chrome 11.0.686.0 开发版 Chrome现在拥有全屏video。
你可以这样做,如果你告诉用户按F11(全屏多浏览器),并把video放在整个页面。
如果没有这些答案不工作(因为他们没有给我),你可以设置两个video。 一个用于常规尺寸,另一个用于全屏尺寸。 当你想切换到全屏
- 使用javascript将全屏video的“src”属性设置为较小video的“src”属性
- 将全屏video中的video.currentTime设置为与小video相同。
- 使用css'display:none'来隐藏小video,并通过'position:absolute'和'z-index:1000'来显示大video。
这很简单,所有的问题都可以这样解决,
1)有逃脱总是把你带出全屏模式(这不适用于通过f11手动进入全屏)
2)暂时显示一个小横幅,说全屏video模式进入(由浏览器)
3)默认屏蔽全屏动作,就像在HTML5和位置API等popup窗口和本地数据库一样。
我没有看到这个devise有任何问题。 有人以为我错过了什么?