Last active
January 27, 2021 04:36
-
-
Save ruman/f7d73a4336869091adeef7d0079acaa0 to your computer and use it in GitHub Desktop.
VideoJS with resume functionality ( Modified from https://github.com/embedly/player.js/blob/gh-pages/scripts/resume.js for videoJS player )
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*global jQuery:true, videojs:true */ | |
(function($, document, window){ | |
// Wrap localStorage. | |
var storage = { | |
_get: function(){ | |
var data = JSON.parse(window.localStorage.getItem('resume')); | |
return data ? data : {}; | |
}, | |
_set: function(data){ | |
window.localStorage.setItem('resume', JSON.stringify(data)); | |
}, | |
get: function(url){ | |
var data = storage._get(); | |
return data[url]; | |
}, | |
set: function(url, seconds){ | |
var data = storage._get(); | |
data[url] = seconds; | |
return storage._set(data); | |
}, | |
remove: function(url){ | |
var data = storage._get(); | |
delete data[url]; | |
return storage._set(data); | |
}, | |
clear: function(){ | |
localStorage.removeItem('resume'); | |
}, | |
isValid: function(){ | |
var uid = new Date(), | |
result; | |
try { | |
window.localStorage.setItem(uid, uid); | |
result = window.localStorage.getItem(uid) === uid; | |
window.localStorage.removeItem(uid); | |
return result; | |
} catch(e) {} | |
return false; | |
} | |
}; | |
// Deal with embedding the video. | |
$(document).on('ready', function(){ | |
if (!storage.isValid){ | |
window.alert('This demo requires localStorage. Your browser currently does not support the SPEC.'); | |
} | |
$('.video').each(function(videoIndex){ | |
var playerID = $(this).attr('id'); | |
if(playerID){ | |
console.log(playerID); | |
var player = videojs(playerID); | |
var currentTime = storage.get(playerID); | |
if(currentTime){ | |
// console.log(currentTime) | |
player.currentTime(currentTime) | |
$(this).addClass('vjs-has-started') | |
} | |
/* | |
Stop all other players when start any audio | |
*/ | |
player.on('play', function(){ | |
$(".video").each(function (index) { | |
if (videoIndex !== index) { | |
this.player.pause(); | |
} | |
}); | |
}); | |
// console.log(player); | |
player.on('timeupdate', function(){ | |
// console.log(this.currentTime()); | |
storage.set(playerID, this.currentTime()); | |
}); | |
player.on('ended', function(){ | |
storage.remove(playerID) | |
}) | |
} | |
}); | |
}); | |
})(jQuery, document, window); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment