在MUI框架中使用video.js插件,并在暂停的时候利用Asp.net将观看时长保存到sqlserver数据库
本次保存数据的情况有三种:
- 在视频播放的时候点击暂停,将本视频的进度保存到数据库
- 利用mui内部的控件,返回上一页操作时,进行保存
- 安卓手机触发返回键的时候,进行保存
示例一:
在video标签上面添加暂停(onpause)事件
<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="none" width="" height="" poster="http://vjs.zencdn.net/v/oceans.png" data-setup='{ "aspectRatio":"640:267", "playbackRates": [1, 1.5, 2] }' onpause="current_time(this);">
<source src="..files/oceans.mp4" type="video/mp4">
</video>
js添加监听事件,video的currentTime属性可以获取当前视频的观看时间
//监听暂停事件
function current_time(video) {
//获取当前video的id
var id = video.id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video.currentTime);
//利用ajax将该video的id和视频已观看时长传递到后台控制器
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
}
});
}
后台数据库存储
//id:编号
//视频时长
public int SaveCurrentTime(string id,int videoHasTime)
{
//经过调试,发现video的id都会在后面加上_html5_api后缀,所以在这里将后缀去除
string guid = id.Replace("_html5_api", "");
//利用传递过来的id,查找到对应的数据,将它的视频播放时长进行更改
videoSave vs = db.videoSave.Find(guid);
vs.videoHasTime = videoHasTime;
db.Entry(vs).State = EntityState.Modified;
db.SaveChanges();
return ;
}
示例二:
mui的返回事件的触发,必须在class里面添加mui-action-back,例:
<header class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">视频</h1>
</header>
然后重写back函数,在点击返回上一页按钮时,弹出提示框,点击确定会将当前页面中所有的的video的观看时间存储到数据库,后台处理程序和上面的一致
mui.back = function(){
mui.confirm("确定要退出吗?", "提示", btnArray, function (e) {
if (e.index == 0) {
//获取页面中所有的video
var video = document.getElementsByClassName("videos");
for (var i = 0; i < video.length; i++) {
var id = video[i].id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video[i].currentTime);
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
if (data == 1) {
mui.alert("视频进度保存成功");
window.location = "Test";
}
}
});
}
}
});
}
示例三:
安卓手机的返回键的监听事件,在页面初始化的时候,必须先添加一个历史记录(后台处理程序和示例一一致)
//添加历史记录
pushHistory();
//安卓手机返回键事件
window.addEventListener("popstate", function (e) {
mui.confirm("确定要退出吗?", "提示", btnArray, function (e) {
if (e.index == 0) {
var video = document.getElementsByClassName("videos"); for (var i = 0; i < video.length; i++) {
var id = video[i].id;
var timeDisplay;
//用秒数来显示当前播放进度
timeDisplay = Math.floor(video[i].currentTime);
$.ajax({
type: 'post',
data: "{id:'" + id + "',videoHasTime:'" + timeDisplay + "'}",
url: '../PlayVideo/SaveCurrentTime',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (data) {
if (data == 1) {
window.location = "Test";
}
}
});
}
}
else {
//再次添加历史记录,否则确认框只能弹出一次(第一次点击返回键之后,如果取消,下一次点击返回键,就不弹出确认框)
pushHistory();
}
}); }, false)
//添加历史记录
function pushHistory() {
var state = {
title: "title",
url: "#"
};
window.history.pushState(state, "title", "#");
} })
在MUI框架中使用video.js插件,并在暂停的时候利用Asp.net将观看时长保存到sqlserver数据库的更多相关文章
- 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。
最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...
- mui框架中底部导航的跳转1
mui框架极大的方便了app的开发但是我们在做页面之间的切换时发现不能实现 a 链接的跳转,这是应为mui相关的一些控件是通过拦截a标签上的href来实现的,所以mui.js会阻止a标签上的href跳 ...
- 使用BootStrap框架中的轮播插件
在使用bootstrap框架中的轮播插件时,效果做出来后,无法通过点击小圆行的按钮来选择特定的图片. 后面发现是最开始的<div>标签中少写了一个id.一开始<div>标签是这 ...
- 大文件视频断点续传插件resumabel.js,优化上传速度,缩短最后一片等待时长。
在angular中使用resumable.js遇到的一个问题:大视频上传到99-100%时,此时正在上传最后一片,最后一片的xhr一直是pending状态.原因插件会检查第一片和最后一片的元数据,检测 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:
创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...
- 移动端 mui框架中input输入框或任何输入框聚焦后页面自动上移
一.mui框架中点击input后,安卓手机弹出自带的输入键盘时,页面自动上移 实现方法: (1)只要把input标签放在mui-content这个类里面就可以了 <div class=" ...
- TP5.1:将外部资源引入到框架中(css/js/font文件)
为了让我们的框架形式变得更加好看,我们需要加入Bootstrap和Jq文件到框架中 1.通过Bootstrap和jq官网进行相关文件的下载 (1)Bootstrap下载地址:https://v3.bo ...
- 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载
这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...
随机推荐
- 零基础学习hadoop到上手工作线路指导(初级篇)
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
- php多进程中的阻塞与非阻塞
我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程. 子进程退出后,父进程没有及时回收,就会产生僵尸进程. 例1: <?php def ...
- Spring框架的IOC核心功能快速入门
2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...
- Win10 激活
先看看你的WIN10激活状态:1.右键开始菜单2.运行3.slmgr.vbs -xpr KMS卸载方法:1.如果是KMSPico,则自带服务卸载批处理,2.不管是哪种KMS工具,卸载掉软件之后请执行以 ...
- Package gtk+-3.0 was not found in the pkg-config search path
问题描述: 在fedora21系统上通过rpmbuild构建fcitx的二进制包时出现以上错误,经老程序员指点:“是相应的开发包没有安装” 解决办法: yum installl gtk3-devel ...
- Eclipse下配置TinyOS开发环境
通过给Eclipse安装Yeti 2 - TinyOS 2 Plugin for Eclipse来配置TinyOS IDE,从而可建立TinyOS Project Yeti 2的介绍请参考网站:htt ...
- Codeforces 703B. Mishka and trip 模拟
B. Mishka and trip time limit per test:1 second memory limit per test:256 megabytes input:standard i ...
- 谈谈我对Ui设计师的一些观点
做ui设计师3年多了,对ui设计师在工作中也了解了许多. 作为UI设计师,在工作中需要清楚了解设计的目的,尤其是你做的不是大众化产品,不能以个人认知.很强的主题性来确定. 例如针对儿童人群的app时, ...
- Java NIO系列教程(四) Scatter 和 Gather
Java NIO系列教程(四) Scatter 和 Gather Java NIO 开始支持 scatter/gather,scatter/gather 用于描述从 Channel(译者注:Chann ...
- 关于IBatisNet的配置文件中数据库连接字符串加密处理
我们通常在IBatisNet配置文件 properties.config 加入数据库连接字符串.数据库连接字符串直接放在里面,没有被加密,很不安全.如果我们把 properties.config 文件 ...