H5视频播放自动全屏,暂停退出全屏等功能
html5视频播放自动全屏,暂停退出全屏等功能
在参考了html5 video fullScreen全屏实现方式及司徒正美的书《javascript框架设计》287页相关代码后,在Safari上实现了视频播放自动全屏、暂停退出全屏等功能。代码是否兼容其他浏览器,未测。
http://www.cnblogs.com/phillyx/
var videoF = (function() {
var tmpV = {};
var video_playing;
/**
* @description 切换内容列时暂停当前播放的视频
*/
function pausedVBeforeChangeLi() {
if (video_playing && !video_playing.ended && !video_playing.paused) {
video_playing.pause();
}
};
tmpV.pausedVBeforeChangeLi= pausedVBeforeChangeLi;
/**
* @description 播放全屏 很诡异,这个方法居然不可用
* @param {Object} element
*/
function launchFullScreen(element) {
if (element.requestFullScreen) {
element.requestFullScreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
}
};
/**
* @description 取消全屏 这个方法也是不可用
* @param {Object} elem
*/
function cancelFullScrren(elem) {
elem = elem || document;
if (elem.cancelFullScrren) {
elem.cancelFullScrren();
} else if (elem.mozCancelFullScreen) {
elem.mozCancelFullScreen();
} else if (elem.webkitCancelFullScreen) {
console.log("webkitCancelFullScreen");
elem.webkitCancelFullScreen();
}
};
/**
* @return 返回支持的全屏函数 从网上找到了这段代码,具体网址忘记了,返回支持的全屏方法,在Safari上可用
* @param {Object} elem
*/
function fullscreen(elem) {
var prefix = 'webkit';
if (elem[prefix + 'EnterFullScreen']) {
return prefix + 'EnterFullScreen';
} else if (elem[prefix + 'RequestFullScreen']) {
return prefix + 'RequestFullScreen';
};
return false;
};
/**
* @description video相关事件的绑定
* @param {Object} v
*/
function videoEvent(v) {
var video = v,
doc = document;
video.addEventListener('play', function() {
//每次只能播放一个视频对象
if (video_playing && video_playing !== this) {
console.log('multi')
pausedVBeforeChangeLi();
}
video_playing = this;
console.log('play');
var fullscreenvideo = fullscreen(video);
video[fullscreenvideo]();
});
video.addEventListener('click', function() {
//点击时如果在播放,自动全屏;否则全屏并播放
console.log('click')
if (this.paused) {
console.log('paused');
this.play();
} else {
var fullscreenvideo = fullscreen(video);
video[fullscreenvideo]();
}
})
video.addEventListener('pause', function(e) {
this.webkitExitFullScreen();
});
video.addEventListener("webkitfullscreenchange", function(e) {
//TODO 未侦听到该事件
console.log(3);
if (!doc.webkitIsFullScreen) { //退出全屏暂停视频
video.pause();
};
}, false);
video.addEventListener("fullscreenchange ", function(e) {
console.log(31);
if (!doc.webkitIsFullScreen) { //退出全屏暂停视频
video.pause();
};
}, false);
video.addEventListener('ended', function() {
//播放完毕,退出全屏
console.log(4)
this.webkitExitFullScreen();
}, false);
};
tmpV.videoEvent = videoEvent;
return tmpV;
}());
H5视频播放自动全屏,暂停退出全屏等功能的更多相关文章
- js控制全屏及退出全屏
js控制全屏及退出全屏,网上很多代码例子,我这里需求和标准的有点出入: 1.当用户点击某按钮,触发iframe下的页面全屏. 2.不允许用户退出全屏. 解决第一点,触发全屏可以按照网上的例子,代码如下 ...
- div的全屏与退出全屏
div的全屏与退出全屏 作用:将div全屏与退出全屏,一般播放器使用较多. html按钮: <button onclick="showFull();"> 全屏 < ...
- android开发:全屏和退出全屏
android开发:全屏和退出全屏 from://http://blog.csdn.net/dyllove98/article/details/8831933 2013-04-21 20:31 413 ...
- JS实现元素的全屏、退出全屏功能
在实际开发中,我们很可能需要实现某一元素的全屏和退出全屏功能,如canvas.所幸的是,js提供了相关api用来处理这一问题,只需简单的调用requestFullScreen.exitFullScr ...
- Android动态的全屏和退出全屏
转自:http://chroya.iteye.com/blog/974031 让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了.但是如果有这样的需求:要在程序运行的过程中,执行了某个操作 ...
- Cordova 设置全屏及退出全屏切换
设置全屏在super.init();之前 最后才退出全屏. 以下为具体代码: package com.agile.ittm; import android.os.Bundle; import andr ...
- js 实现操作浏览器或者元素的全屏与退出全屏功能
<!DOCTYPE html> <html lang="en" id="div1"> <head> <meta cha ...
- ng2 中的全屏与退出全屏
1.进入全屏 launchFullscreen(element) { if(element.requestFullscreen) { element.requestFullscreen(); } el ...
- js之切换全屏和退出全屏实现
应用场景:比如很多网页游戏全屏之类的,或者是网上看小说等. 核心代码: //控制全屏 function enterfullscreen() { //进入全屏 $("#fullscreen&q ...
随机推荐
- PAT甲级——A1049 Counting Ones
The task is simple: given any positive integer N, you are supposed to count the total number of 1's ...
- fastjson循环引用 问题@ManyToOne @OneToOne返回数据中"$ref"问题
返回数据为 这样前端就无法获取正确数据(至少是不改变代码,不增加代码量的情况下) 所以还是改返回值比较好 根据查阅 https://blog.csdn.net/qq_38487524/article/ ...
- Life of Pi
·when you look into his eyes,you are seeing your own emotionsreflected back at you,nothing else. ·Go ...
- spring整合http
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接出处:https://blog.csdn.net/qq_3076499,否则保留追究法律责任的权利. 如果 ...
- HDFS数据读写过程
- Leetcode492.Construct the Rectangle构造矩形
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的. 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面.要求: 1. 你设计的矩形页面必 ...
- VS2013 IIS Express8.0
1.下载最新版本的 Microsoft Web Platform Installer 5.0. 2.在组件列表中选择最新版本的 WebMatrix 3.0,安装重启后即可正常使用 IIS Expres ...
- bzoj 1123 [POI2008]BLO——点双连通分量
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1123 点双连通分量缩点,然后各种各样. 结果不会写了.比如新连边.记录一个点是割点缩成的点还 ...
- H5C3--设置颜色的几种方式
设置颜色的方式: 关键字:red|blue 第一种:十六进制:#ffffff 第二种:rgb(红,绿,蓝): rgb(ffff00) rgba(红,绿,蓝,透明度) 第三种:hsl(色相,饱和度,明度 ...
- 一些js面试高频知识点的总结
第一部分:Object Prototypes (对象原型) (1)定义一个方法,要求传入一个string类型的参数,然后将string的每个字符间加个空格返回,例如: spacify('hello w ...