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