本次保存数据的情况有三种:

  1. 在视频播放的时候点击暂停,将本视频的进度保存到数据库
  2. 利用mui内部的控件,返回上一页操作时,进行保存
  3. 安卓手机触发返回键的时候,进行保存

示例一:

  在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数据库的更多相关文章

  1. 微信 vue中使用video.js播放m3u8视频,解决安卓自动全屏的问题。

    最近一个项目中需要在微信中播放m3u8格式的视频,刚开始用了 vue-video-player 这个插件,在IOS手机体验良好,本以为完事了, 结果安卓手机一点播放就自动全屏,心态略崩.查了资料说是安 ...

  2. mui框架中底部导航的跳转1

    mui框架极大的方便了app的开发但是我们在做页面之间的切换时发现不能实现 a 链接的跳转,这是应为mui相关的一些控件是通过拦截a标签上的href来实现的,所以mui.js会阻止a标签上的href跳 ...

  3. 使用BootStrap框架中的轮播插件

    在使用bootstrap框架中的轮播插件时,效果做出来后,无法通过点击小圆行的按钮来选择特定的图片. 后面发现是最开始的<div>标签中少写了一个id.一开始<div>标签是这 ...

  4. 大文件视频断点续传插件resumabel.js,优化上传速度,缩短最后一片等待时长。

    在angular中使用resumable.js遇到的一个问题:大视频上传到99-100%时,此时正在上传最后一片,最后一片的xhr一直是pending状态.原因插件会检查第一片和最后一片的元数据,检测 ...

  5. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  6. Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:

    创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...

  7. 移动端 mui框架中input输入框或任何输入框聚焦后页面自动上移

    一.mui框架中点击input后,安卓手机弹出自带的输入键盘时,页面自动上移 实现方法: (1)只要把input标签放在mui-content这个类里面就可以了 <div class=" ...

  8. TP5.1:将外部资源引入到框架中(css/js/font文件)

    为了让我们的框架形式变得更加好看,我们需要加入Bootstrap和Jq文件到框架中 1.通过Bootstrap和jq官网进行相关文件的下载 (1)Bootstrap下载地址:https://v3.bo ...

  9. 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载

    这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...

随机推荐

  1. iOS下JS与OC互相调用(七)--Cordova 环境搭建

    Cordova大家可能比较陌生,但肯定听过 PhoneGap ,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.它是一个可以让 JS 与原生代码互相通信的一个库,并且提供了一 ...

  2. vs2008 FileUpload 上传控件 Gridview传多个值

    拖fileupload控件,控件后加button1 lable1 lable2,还要在与本窗体同意目录下新建img文件夹protected void Button1_Click(object send ...

  3. Navicat Premium11连接Oracle出现ORA-28547:connection to server failed

    环境描述:本地Oracle正常安装,中途没有出现任何异常.确保Oracle的主要服务都启动了.1.OracleServiceORCL2.OracleOraDb11g_home1TNSListener ...

  4. C&C++内存布局

    1. Memory Layout of a C Program http://codingfreak.blogspot.com/2012/03/memory-layout-of-c-program-p ...

  5. LaTeX 公式(转自)Iowa_Battleship 神犇

    传送门 (我这个蒟蒻只是mark一下 这个LaTex公式很全!!我是照着打数学公式的!! orz大佬Iowa

  6. 图片素材类Web原型制作分享-Pexels

    Pexels是一个高清图片下载服务站点,为用户提供海量共享图片素材的网站,每周都会定量更新. 菜单栏和底部栏都是悬浮在固定位置,内容区域滚动.首页图片排列采用瀑布流的方式,多图片滚动.包含的页面有:浏 ...

  7. 5 个关键点!优化你的 UI 原型设计

    当你和你的团队着手开始一个产品开发的时候,最开始的一步一般是绘制线框图,这是大部分产品项目的第一步,它不复杂但是却对整个产品的完成形态和质量有着至关重要的作用. 很多刚开始工作设计师或者产品经理都会提 ...

  8. 检查Makefile中的tab

    转:http://stackoverflow.com/questions/16931770/makefile4-missing-separator-stop makefile has a very s ...

  9. Django入门指南-第6章:第一个视图函数(完结)

    http://127.0.0.1:8000/ # boards/views.py from django.http import HttpResponse from .models import Bo ...

  10. 什么是DNS服务器

    DNS:是做域名解析的.我们平时所输入的网址,都是某台服务器的主机名,比如www.BAIDU.COM,主机之间通讯是通过IP地址访问的,这个是有需要某个机制,把地址解析成名字,因为IP地址是一串数字, ...