html5视频播放自动全屏,暂停退出全屏等功能

在参考了html5 video fullScreen全屏实现方式及司徒正美的书《javascript框架设计》287页相关代码后,在Safari上实现了视频播放自动全屏、暂停退出全屏等功能。代码是否兼容其他浏览器,未测。

http://www.cnblogs.com/phillyx/

  1. var videoF = (function() {
  2. var tmpV = {};
  3. var video_playing;
  4. /**
  5. * @description 切换内容列时暂停当前播放的视频
  6. */
  7. function pausedVBeforeChangeLi() {
  8. if (video_playing && !video_playing.ended && !video_playing.paused) {
  9. video_playing.pause();
  10. }
  11. };
  12. tmpV.pausedVBeforeChangeLi= pausedVBeforeChangeLi;
  13. /**
  14. * @description 播放全屏 很诡异,这个方法居然不可用
  15. * @param {Object} element
  16. */
  17. function launchFullScreen(element) {
  18. if (element.requestFullScreen) {
  19. element.requestFullScreen();
  20. } else if (element.mozRequestFullScreen) {
  21. element.mozRequestFullScreen();
  22. } else if (element.webkitRequestFullScreen) {
  23. element.webkitRequestFullScreen();
  24. }
  25. };
  26. /**
  27. * @description 取消全屏 这个方法也是不可用
  28. * @param {Object} elem
  29. */
  30. function cancelFullScrren(elem) {
  31. elem = elem || document;
  32. if (elem.cancelFullScrren) {
  33. elem.cancelFullScrren();
  34. } else if (elem.mozCancelFullScreen) {
  35. elem.mozCancelFullScreen();
  36. } else if (elem.webkitCancelFullScreen) {
  37. console.log("webkitCancelFullScreen");
  38. elem.webkitCancelFullScreen();
  39. }
  40. };
  41. /**
  42. * @return 返回支持的全屏函数 从网上找到了这段代码,具体网址忘记了,返回支持的全屏方法,在Safari上可用
  43. * @param {Object} elem
  44. */
  45. function fullscreen(elem) {
  46. var prefix = 'webkit';
  47. if (elem[prefix + 'EnterFullScreen']) {
  48. return prefix + 'EnterFullScreen';
  49. } else if (elem[prefix + 'RequestFullScreen']) {
  50. return prefix + 'RequestFullScreen';
  51. };
  52. return false;
  53. };
  54. /**
  55. * @description video相关事件的绑定
  56. * @param {Object} v
  57. */
  58. function videoEvent(v) {
  59. var video = v,
  60. doc = document;
  61. video.addEventListener('play', function() {
  62. //每次只能播放一个视频对象
  63. if (video_playing && video_playing !== this) {
  64. console.log('multi')
  65. pausedVBeforeChangeLi();
  66. }
  67. video_playing = this;
  68. console.log('play');
  69. var fullscreenvideo = fullscreen(video);
  70. video[fullscreenvideo]();
  71. });
  72. video.addEventListener('click', function() {
  73. //点击时如果在播放,自动全屏;否则全屏并播放
  74. console.log('click')
  75. if (this.paused) {
  76. console.log('paused');
  77. this.play();
  78. } else {
  79. var fullscreenvideo = fullscreen(video);
  80. video[fullscreenvideo]();
  81. }
  82. })
  83. video.addEventListener('pause', function(e) {
  84. this.webkitExitFullScreen();
  85. });
  86. video.addEventListener("webkitfullscreenchange", function(e) {
  87. //TODO 未侦听到该事件
  88. console.log(3);
  89. if (!doc.webkitIsFullScreen) { //退出全屏暂停视频
  90. video.pause();
  91. };
  92. }, false);
  93. video.addEventListener("fullscreenchange ", function(e) {
  94. console.log(31);
  95. if (!doc.webkitIsFullScreen) { //退出全屏暂停视频
  96. video.pause();
  97. };
  98. }, false);
  99. video.addEventListener('ended', function() {
  100. //播放完毕,退出全屏
  101. console.log(4)
  102. this.webkitExitFullScreen();
  103. }, false);
  104. };
  105. tmpV.videoEvent = videoEvent;
  106. return tmpV;
  107. }());

H5视频播放自动全屏,暂停退出全屏等功能的更多相关文章

  1. js控制全屏及退出全屏

    js控制全屏及退出全屏,网上很多代码例子,我这里需求和标准的有点出入: 1.当用户点击某按钮,触发iframe下的页面全屏. 2.不允许用户退出全屏. 解决第一点,触发全屏可以按照网上的例子,代码如下 ...

  2. div的全屏与退出全屏

    div的全屏与退出全屏 作用:将div全屏与退出全屏,一般播放器使用较多. html按钮: <button onclick="showFull();"> 全屏 < ...

  3. android开发:全屏和退出全屏

    android开发:全屏和退出全屏 from://http://blog.csdn.net/dyllove98/article/details/8831933 2013-04-21 20:31 413 ...

  4. JS实现元素的全屏、退出全屏功能

     在实际开发中,我们很可能需要实现某一元素的全屏和退出全屏功能,如canvas.所幸的是,js提供了相关api用来处理这一问题,只需简单的调用requestFullScreen.exitFullScr ...

  5. Android动态的全屏和退出全屏

    转自:http://chroya.iteye.com/blog/974031 让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了.但是如果有这样的需求:要在程序运行的过程中,执行了某个操作 ...

  6. Cordova 设置全屏及退出全屏切换

    设置全屏在super.init();之前 最后才退出全屏. 以下为具体代码: package com.agile.ittm; import android.os.Bundle; import andr ...

  7. js 实现操作浏览器或者元素的全屏与退出全屏功能

    <!DOCTYPE html> <html lang="en" id="div1"> <head> <meta cha ...

  8. ng2 中的全屏与退出全屏

    1.进入全屏 launchFullscreen(element) { if(element.requestFullscreen) { element.requestFullscreen(); } el ...

  9. js之切换全屏和退出全屏实现

    应用场景:比如很多网页游戏全屏之类的,或者是网上看小说等. 核心代码: //控制全屏 function enterfullscreen() { //进入全屏 $("#fullscreen&q ...

随机推荐

  1. CentOS 6.5 MySQL安装

    yum search mysql #查看mysql包 yum -y install mysql-server #安装mysql,注意是mysql-server iptables -I INPUT -p ...

  2. Python学习之函数(多层函数)、re模块的正则匹配--计算复杂加减乘除

    头疼,其实这个程序在我看的视频当中是当做re模块的运用来进行测试的,而到了我这里就成了简化版的了,因为我实在是做吐了,恕小弟无能,只能做简化版的.为何说是简化版呢,因为要求是给的计算式是多层嵌套的小括 ...

  3. ECMAScript 5 新增 Object 接口

    对象 构造器 说明 Object getPrototypeOf 返回对象的原型 Object getOwnPropertyDescriptor 返回对象自有属性的属性描述符 Object getOwn ...

  4. python-web-下载所有xkcd漫画

    下载所有xkcd漫画 # downloads every single xkcd comic import requests,os,bs4 url='http://xkcd.com' # start ...

  5. Leetcode434.Number of Segments in a String字符串中的单词数

    统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John" ...

  6. UI2Code智能生成Flutter代码--整体设计篇

    摘要: UI2CODE项目是闲鱼技术团队研发的一款通过机器视觉理解+AI人工智能将UI视觉图片转化为端侧代码的工具. 背景: 随着移动互联网时代的到来,人类的科学技术突飞猛进.然而软件工程师们依旧需要 ...

  7. 用JetBrains PyCharm 2017.2创建运行Django程序

    在JetBrains PyCharm 2017.2里选择 文件(F) 新项目 点击  三角形  运行 修改Urls.py """S14Djngo URL Configur ...

  8. nvm与nrm

    nvm:切换Node版本   nrm:管理npm包的镜像源 nvm的安装,可以参考官网,windows系统直接https://github.com/coreybutler/nvm-windows/re ...

  9. Spring松耦合示例(转)& IOC

    Spring松耦合示例 轻松学习Spring<一> IoC容器和Dependency Injection模式 最近公司需要,项目中要用到Spring和Ibatis.趁着过年好好学习学习.I ...

  10. CesiumLab V1.2 新功能 倾斜数据处理

    一转眼又是一周的时间,我们的实验室功能又强大了. 照旧我们先放毒,放图,图,太晚了,字都敲不到一起了   lod以及包围盒   大雁塔实例,按楼层单体化   倾斜数据处理参数设置 简单介绍一下 Ces ...