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