Eine Neue Datei hochladen
This commit is contained in:
parent
26c8162153
commit
8b102780d2
123
s/videojs.persistvolume.js
Normal file
123
s/videojs.persistvolume.js
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
"use strict";
|
||||||
|
(function(factory){
|
||||||
|
/*!
|
||||||
|
* Custom Universal Module Definition (UMD)
|
||||||
|
*
|
||||||
|
* Video.js will never be a non-browser lib so we can simplify UMD a bunch and
|
||||||
|
* still support requirejs and browserify. This also needs to be closure
|
||||||
|
* compiler compatible, so string keys are used.
|
||||||
|
*/
|
||||||
|
if (typeof define === 'function' && define['amd']) {
|
||||||
|
define(['./video'], function(vjs){ factory(window, document, vjs) });
|
||||||
|
// checking that module is an object too because of umdjs/umd#35
|
||||||
|
} else if (typeof exports === 'object' && typeof module === 'object') {
|
||||||
|
factory(window, document, require('video.js'));
|
||||||
|
} else {
|
||||||
|
factory(window, document, videojs);
|
||||||
|
}
|
||||||
|
|
||||||
|
})(function(window, document, vjs) {
|
||||||
|
//cookie functions from https://developer.mozilla.org/en-US/docs/DOM/document.cookie
|
||||||
|
var
|
||||||
|
getCookieItem = function(sKey) {
|
||||||
|
if (!sKey || !hasCookieItem(sKey)) { return null; }
|
||||||
|
var reg_ex = new RegExp(
|
||||||
|
"(?:^|.*;\\s*)" +
|
||||||
|
window.escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") +
|
||||||
|
"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"
|
||||||
|
);
|
||||||
|
return window.unescape(document.cookie.replace(reg_ex,"$1"));
|
||||||
|
},
|
||||||
|
|
||||||
|
setCookieItem = function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
|
||||||
|
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return; }
|
||||||
|
var sExpires = "";
|
||||||
|
if (vEnd) {
|
||||||
|
switch (vEnd.constructor) {
|
||||||
|
case Number:
|
||||||
|
sExpires = vEnd === Infinity ? "; expires=Tue, 19 Jan 2038 03:14:07 GMT" : "; max-age=" + vEnd;
|
||||||
|
break;
|
||||||
|
case String:
|
||||||
|
sExpires = "; expires=" + vEnd;
|
||||||
|
break;
|
||||||
|
case Date:
|
||||||
|
sExpires = "; expires=" + vEnd.toGMTString();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.cookie =
|
||||||
|
window.escape(sKey) + "=" +
|
||||||
|
window.escape(sValue) +
|
||||||
|
sExpires +
|
||||||
|
(sDomain ? "; domain=" + sDomain : "") +
|
||||||
|
(sPath ? "; path=" + sPath : "") +
|
||||||
|
(bSecure ? "; secure" : "");
|
||||||
|
},
|
||||||
|
|
||||||
|
hasCookieItem = function(sKey) {
|
||||||
|
return (new RegExp(
|
||||||
|
"(?:^|;\\s*)" +
|
||||||
|
window.escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") +
|
||||||
|
"\\s*\\=")
|
||||||
|
).test(document.cookie);
|
||||||
|
},
|
||||||
|
|
||||||
|
hasLocalStorage = function() {
|
||||||
|
try {
|
||||||
|
window.localStorage.setItem('persistVolume', 'persistVolume');
|
||||||
|
window.localStorage.removeItem('persistVolume');
|
||||||
|
return true;
|
||||||
|
} catch(e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getStorageItem = function(key) {
|
||||||
|
return hasLocalStorage() ? window.localStorage.getItem(key) : getCookieItem(key);
|
||||||
|
},
|
||||||
|
setStorageItem = function(key, value) {
|
||||||
|
return hasLocalStorage() ? window.localStorage.setItem(key, value) : setCookieItem(key, value, Infinity, '/');
|
||||||
|
},
|
||||||
|
|
||||||
|
extend = function(obj) {
|
||||||
|
var arg, i, k;
|
||||||
|
for (i = 1; i < arguments.length; i++) {
|
||||||
|
arg = arguments[i];
|
||||||
|
for (k in arg) {
|
||||||
|
if (arg.hasOwnProperty(k)) {
|
||||||
|
obj[k] = arg[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
},
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
namespace: ""
|
||||||
|
},
|
||||||
|
|
||||||
|
volumePersister = function(options) {
|
||||||
|
var player = this;
|
||||||
|
var settings = extend({}, defaults, options || {});
|
||||||
|
|
||||||
|
var key = settings.namespace + '-' + 'volume';
|
||||||
|
var muteKey = settings.namespace + '-' + 'mute';
|
||||||
|
|
||||||
|
player.on("volumechange", function() {
|
||||||
|
setStorageItem(key, player.volume());
|
||||||
|
setStorageItem(muteKey, player.muted());
|
||||||
|
});
|
||||||
|
|
||||||
|
var persistedVolume = getStorageItem(key);
|
||||||
|
if(persistedVolume !== null){
|
||||||
|
player.volume(persistedVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
var persistedMute = getStorageItem(muteKey);
|
||||||
|
if(persistedMute !== null){
|
||||||
|
player.muted('true' === persistedMute);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
vjs.plugin("persistvolume", volumePersister);
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user