vendor/assets/javascripts/webshims/shims/track.js in webshims-rails-0.4.3 vs vendor/assets/javascripts/webshims/shims/track.js in webshims-rails-0.4.4
- old
+ new
@@ -1,26 +1,28 @@
jQuery.webshims.register('track', function($, webshims, window, document, undefined){
+ "use strict";
var mediaelement = webshims.mediaelement;
var id = new Date().getTime();
//descriptions are not really shown, but they are inserted into the dom
var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
var notImplemented = function(){
webshims.error('not implemented yet');
};
+ var dummyTrack = $('<track />');
var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
var createEventTarget = function(obj){
var eventList = {};
obj.addEventListener = function(name, fn){
if(eventList[name]){
- webshims.error('always use $.bind to the shimed event: '+ name +' already bound fn was: '+ eventList[name] +' your fn was: '+ fn);
+ webshims.error('always use $.on to the shimed event: '+ name +' already bound fn was: '+ eventList[name] +' your fn was: '+ fn);
}
eventList[name] = fn;
};
obj.removeEventListener = function(name, fn){
if(eventList[name] && eventList[name] != fn){
- webshims.error('always use $.bind/$.unbind to the shimed event: '+ name +' already bound fn was: '+ eventList[name] +' your fn was: '+ fn);
+ webshims.error('always use $.on/$.off to the shimed event: '+ name +' already bound fn was: '+ eventList[name] +' your fn was: '+ fn);
}
if(eventList[name]){
delete eventList[name];
}
};
@@ -38,10 +40,15 @@
}
}
return cue;
}
};
+ var numericModes = {
+ 0: 'disabled',
+ 1: 'hidden',
+ 2: 'showing'
+ };
var textTrackProto = {
shimActiveCues: null,
_shimActiveCues: null,
activeCues: null,
@@ -150,14 +157,14 @@
for(i = 0, len = newTracks.length; i < len; i++){
trackList.push(newTracks[i]);
}
for(i = 0, len = removed.length; i < len; i++){
- $([trackList]).triggerHandler($.Event({type: 'removetrack', track: trackList, track: removed[i]}));
+ $([trackList]).triggerHandler($.Event({type: 'removetrack', track: removed[i]}));
}
for(i = 0, len = added.length; i < len; i++){
- $([trackList]).triggerHandler($.Event({type: 'addtrack', track: trackList, track: added[i]}));
+ $([trackList]).triggerHandler($.Event({type: 'addtrack', track: added[i]}));
}
if(baseData.scriptedTextTracks || removed.length){
$(this).triggerHandler('updatetrackdisplay');
}
}
@@ -335,12 +342,12 @@
obj._shimActiveCues = null;
obj.activeCues = null;
obj.cues = null;
$(mediaelem).unbind(loadEvents, load);
$(track).unbind('checktrackmode', load);
- $(mediaelem).bind(loadEvents, load);
- $(track).bind('checktrackmode', load);
+ $(mediaelem).on(loadEvents, load);
+ $(track).on('checktrackmode', load);
if(_default){
obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
load();
}
};
@@ -713,11 +720,11 @@
writeable: false
},
addTextTrack: {
value: function(kind, label, lang){
var textTrack = mediaelement.createTextTrack(this, {
- kind: kind || '',
+ kind: dummyTrack.prop('kind', kind || '').prop('kind'),
label: label || '',
srclang: lang || ''
});
var baseData = webshims.data(this, 'mediaelementBase') || webshims.data(this, 'mediaelementBase', {});
if (!baseData.scriptedTextTracks) {
@@ -729,11 +736,11 @@
}
}
}, 'prop');
- $(document).bind('emptied ended updatetracklist', function(e){
+ $(document).on('emptied ended updatetracklist', function(e){
if($(e.target).is('audio, video')){
var baseData = webshims.data(e.target, 'mediaelementBase');
if(baseData){
clearTimeout(baseData.updateTrackListTimer);
baseData.updateTrackListTimer = setTimeout(function(){
@@ -770,22 +777,22 @@
var readyState;
if(origTrack){
kind = $.prop(this, 'kind');
readyState = getNativeReadyState(this, origTrack);
if (origTrack.mode || readyState) {
- shimedTrack.mode = origTrack.mode;
+ shimedTrack.mode = numericModes[origTrack.mode] || origTrack.mode;
}
//disable track from showing + remove UI
if(kind != 'descriptions'){
origTrack.mode = (typeof origTrack.mode == 'string') ? 'disabled' : 0;
this.kind = 'metadata';
$(this).attr({kind: kind});
}
}
})
- .bind('load error', function(e){
+ .on('load error', function(e){
if(e.originalEvent){
e.stopImmediatePropagation();
}
})
;
@@ -805,7 +812,6 @@
});
if(Modernizr.track){
$('video, audio').trigger('trackapichange');
}
-
});
\ No newline at end of file