webshims-rails 1.10.6 → 1.10.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/polyfiller.js +14 -7
  4. data/vendor/assets/javascripts/webshims/shims/color-picker.js +1 -0
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +153 -155
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +168 -136
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +116 -44
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +100 -95
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +100 -95
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +51 -91
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +129 -232
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +228 -326
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +116 -44
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +116 -44
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +210 -214
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +204 -246
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +210 -214
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +59 -28
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +100 -95
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +2 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +210 -214
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +51 -91
  23. data/vendor/assets/javascripts/webshims/shims/combos/28.js +110 -119
  24. data/vendor/assets/javascripts/webshims/shims/combos/29.js +6 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +126 -156
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +126 -155
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +104 -151
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +73 -96
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +116 -44
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +116 -44
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +226 -250
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +226 -250
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +168 -136
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +51 -91
  35. data/vendor/assets/javascripts/webshims/shims/form-core.js +53 -60
  36. data/vendor/assets/javascripts/webshims/shims/form-message.js +22 -5
  37. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +87 -30
  38. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +2 -76
  39. data/vendor/assets/javascripts/webshims/shims/form-validation.js +2 -2
  40. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +1 -1
  41. data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +18 -8
  42. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +100 -95
  43. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +59 -28
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +9 -2
  45. data/vendor/assets/javascripts/webshims/shims/range-ui.js +29 -14
  46. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +21 -7
  47. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +30 -15
  48. data/vendor/assets/javascripts/webshims/shims/track-ui.js +6 -0
  49. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjdlMzZkNjM4YTFjNWVmNWZiNmQ1ZWQ4M2YyOGIyYTljMzMwZjU2Mg==
4
+ NWI2OGRjYmRhYTU5ZDRhOWZmM2Y3ODlmNzkwYzA0Y2FmOGQ4NWNjOQ==
5
5
  data.tar.gz: !binary |-
6
- OWIxZDJmNjQ0ZTcyYzY5Mjg0NWQxZjg1NGVkOTY1Yzg0ODM4ZmQwMQ==
6
+ ZTRlODMwMTM0YzNmMzA2YmZlYTIwNDllZWQ2YTgxZWNmYTQ2MjBhMw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MGQ4ZjgyMjJhNjNkNzg2ZDk4ZmRhYTg1YmQ4ZmUzYWYxZTI4YmNmYmVlNzQz
10
- MTgxZjI3MDRiNWJmNjk1NjhjYWRiOWI2YzNjMTg2ZjQ3ODdiNWNlMjNlMmRh
11
- M2IyYzNlZTQ2MWZmZDlmNzc5N2M1NWYwZWJkYzVmMWY4YWFlM2I=
9
+ YWE1M2U1YmE0YTlhNGRhMDdmM2Y0NWY3MDNiNjljM2YwNzk5NzYyYzUwM2Q3
10
+ NGQ4NjE2YzNiZDg2NGIyOTdjMTJlMDFlZDQxYzY1ZDAxZjhkYWM5OGI5ZjIz
11
+ NWQ0ZGY4MDcyMjc2ZGViNjI2NDNkMDE5ODVlYTBiNjlkNzM0ZDc=
12
12
  data.tar.gz: !binary |-
13
- NGRmZGY2ZGI2YTk3ZTY5ZjlhYWExMDU2MzVhMGVkOTlkZTExNTY4MmVhM2Yy
14
- YzVkYmMwMTI4ZjY2MTc1MDBmMDE2ZTg4NzRiNTM4ZDVlYTAzZDMxYzczYzM2
15
- NTFhOTllMjQ4Yjc2MDk4ZDAwMDg4ZjM5ZmFiNmI4Y2NjYjJhMDI=
13
+ YjgyM2U1YzYwMTljNTAxMTE3OGZmNWNjMzg0MjdmYzZjYTMxMTQ2ZjI1NDAx
14
+ NGY1NjQ1ZTY1ZDJjOGQ1ODM4NTEzZWQ4NmE5MTY1NmI4MTY2ZThlNGYxZDRi
15
+ YjM1NjgxNzcxMzkzMmE5MzkyNDBmZWVmMzE3OGVlN2JjMDNlZmU=
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.10.6"
4
- WEBSHIMS_VERSION = "1.10.6"
3
+ VERSION = "1.10.9"
4
+ WEBSHIMS_VERSION = "1.10.9"
5
5
  end
6
6
  end
@@ -30,12 +30,12 @@
30
30
  }
31
31
 
32
32
  var webshims = {
33
- version: '1.10.6',
33
+ version: '1.10.9',
34
34
  cfg: {
35
35
  useImportantStyles: true,
36
36
  //addCacheBuster: false,
37
37
  waitReady: true,
38
- extendNative: true,
38
+ extendNative: 1,
39
39
  loadStyles: true,
40
40
  disableShivMethods: true,
41
41
  wspopover: {appendTo: 'body', hideOnBlur: true},
@@ -513,7 +513,7 @@
513
513
  };
514
514
 
515
515
  loadedSrcs.push(src);
516
- if(window.require){
516
+ if(window.require && window.define && window.define.amd){
517
517
  require([src], complete);
518
518
  } else if (window.sssl) {
519
519
  sssl(src, complete);
@@ -939,6 +939,7 @@
939
939
  //<forms
940
940
  (function(){
941
941
  var formExtend, formOptions, formExtras;
942
+ var fShim = 'form-shim-extend';
942
943
  var modernizrInputAttrs = Modernizr.input;
943
944
  var modernizrInputTypes = Modernizr.inputtypes;
944
945
  var formvalidation = 'formvalidation';
@@ -967,7 +968,7 @@
967
968
  bugs.bustedValidity = bustedValidity = !modernizrInputAttrs.list || window.opera || Modernizr.formattribute === false || !Modernizr.fieldsetdisabled || !('value' in document.createElement('progress')) || !('value' in document.createElement('output')) || !($('<input type="date" value="1488-12-11" />')[0].validity || {valid: true}).valid || !('required' in select) || (select.validity || {}).valid;
968
969
  }
969
970
 
970
- formExtend = Modernizr[formvalidation] && !bustedValidity ? 'form-native-extend' : 'form-shim-extend';
971
+ formExtend = Modernizr[formvalidation] && !bustedValidity ? 'form-native-extend' : fShim;
971
972
 
972
973
  }
973
974
  initialFormTest.run = true;
@@ -1023,7 +1024,7 @@
1023
1024
  c: [6, 5]
1024
1025
  });
1025
1026
 
1026
- addPolyfill('form-shim-extend', {
1027
+ addPolyfill(fShim, {
1027
1028
  f: 'forms',
1028
1029
  test: function(){
1029
1030
  return Modernizr[formvalidation] && !bustedValidity;
@@ -1046,7 +1047,7 @@
1046
1047
  options: formOptions,
1047
1048
  c: [24]
1048
1049
  };
1049
- addModule('form-validation', $.extend({d: ['form-message']}, formExtras));
1050
+ addModule('form-validation', $.extend({d: ['form-message', 'form-core']}, formExtras));
1050
1051
 
1051
1052
  addModule('form-validators', $.extend({}, formExtras));
1052
1053
 
@@ -1069,6 +1070,7 @@
1069
1070
  return false;
1070
1071
  }
1071
1072
  });
1073
+
1072
1074
  return ret;
1073
1075
  },
1074
1076
  methodNames: ['stepUp', 'stepDown'],
@@ -1090,8 +1092,13 @@
1090
1092
  addPolyfill('form-number-date-ui', {
1091
1093
  f: 'forms-ext',
1092
1094
  test: function(){
1095
+ var o = this.options;
1093
1096
  initialFormTest();
1094
- return !this.options.replaceUI && modules[fNuAPI].test();
1097
+ //input widgets on old on old androids can't be trusted
1098
+ if(fShim == formExtend && (/Android/i).test(navigator.userAgent)){
1099
+ o.replaceUI = true;
1100
+ }
1101
+ return !o.replaceUI && modules[fNuAPI].test();
1095
1102
  },
1096
1103
  d: ['forms', DOMSUPPORT, fNuAPI, 'range-ui'],
1097
1104
  options: {
@@ -2412,4 +2412,5 @@ webshims.register('color-picker', function($, webshims, window, document, undefi
2412
2412
  if(options && options._types && $.inArray('color', options._types) == -1){
2413
2413
  webshims.error('[type="color"] used without adding it to the types config.');
2414
2414
  }
2415
+ document.createElement('img').src = webshims.cfg.basePath +'jpicker/images/Maps.png';
2415
2416
  });
@@ -573,12 +573,13 @@ webshims.register('form-core', function($, webshims, window, document, undefined
573
573
  $.expr[":"][name] = $.expr.filters[name+"-element"];
574
574
  });
575
575
 
576
-
577
- $.expr[":"].focus = function( elem ) {
576
+ var pseudoFocus = $.expr[":"].focus;
577
+ $.expr[":"].focus = function(){
578
578
  try {
579
- var doc = elem.ownerDocument;
580
- return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus());
581
- } catch(e){}
579
+ return pseudoFocus.apply(this, arguments);
580
+ } catch(e){
581
+ webshims.error(e);
582
+ }
582
583
  return false;
583
584
  };
584
585
 
@@ -593,7 +594,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
593
594
  });
594
595
  };
595
596
 
596
-
597
+ var transClass = ('transitionDelay' in document.documentElement.style) ? '' : ' no-transition';
597
598
  webshims.wsPopover = {
598
599
  id: 0,
599
600
  _create: function(){
@@ -601,7 +602,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
601
602
  this.id = webshims.wsPopover.id++;
602
603
  this.eventns = '.wsoverlay' + this.id;
603
604
  this.timers = {};
604
- this.element = $('<div class="ws-popover" tabindex="-1"><div class="ws-po-outerbox"><div class="ws-po-arrow"><div class="ws-po-arrowbox" /></div><div class="ws-po-box" /></div></div>');
605
+ this.element = $('<div class="ws-popover'+transClass+'" tabindex="-1"><div class="ws-po-outerbox"><div class="ws-po-arrow"><div class="ws-po-arrowbox" /></div><div class="ws-po-box" /></div></div>');
605
606
  this.contentElement = $('.ws-po-box', this.element);
606
607
  this.lastElement = $([]);
607
608
  this.bindElement();
@@ -640,47 +641,6 @@ webshims.register('form-core', function($, webshims, window, document, undefined
640
641
  };
641
642
 
642
643
 
643
- /* extension, but also used to fix native implementation workaround/bugfixes */
644
- (function(){
645
- var firstEvent,
646
- invalids = [],
647
- stopSubmitTimer,
648
- form
649
- ;
650
-
651
- $(document).on('invalid', function(e){
652
- if(e.wrongWebkitInvalid){return;}
653
- var jElm = $(e.target);
654
-
655
-
656
- if(!firstEvent){
657
- //trigger firstinvalid
658
- firstEvent = $.Event('firstinvalid');
659
- firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
660
- var firstSystemInvalid = $.Event('firstinvalidsystem');
661
- $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
662
- jElm.trigger(firstEvent);
663
- }
664
-
665
- //if firstinvalid was prevented all invalids will be also prevented
666
- if( firstEvent && firstEvent.isDefaultPrevented() ){
667
- e.preventDefault();
668
- }
669
- invalids.push(e.target);
670
- e.extraData = 'fix';
671
- clearTimeout(stopSubmitTimer);
672
- stopSubmitTimer = setTimeout(function(){
673
- var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
674
- //reset firstinvalid
675
- firstEvent = false;
676
- invalids = [];
677
- $(e.target).trigger(lastEvent, lastEvent);
678
- }, 9);
679
- jElm = null;
680
- });
681
- })();
682
-
683
-
684
644
  webshims.getContentValidationMessage = function(elem, validity, key){
685
645
  var message = $(elem).data('errormessage') || elem.getAttribute('x-moz-errormessage') || '';
686
646
  if(key && message[key]){
@@ -714,19 +674,13 @@ webshims.register('form-core', function($, webshims, window, document, undefined
714
674
  };
715
675
 
716
676
 
717
- webshims.ready('forms', function(){
718
- $(document).on('focusin.lazyloadvalidation', function(e){
719
- if('form' in e.target && $(e.target).is(':invalid')){
720
- lazyLoad();
721
- }
722
- });
677
+ $(document).on('focusin.lazyloadvalidation', function(e){
678
+ if('form' in e.target && $(e.target).is(':invalid')){
679
+ lazyLoad();
680
+ }
723
681
  });
724
682
  webshims.ready('WINDOWLOAD', lazyLoad);
725
- if(options.overrideMessages){
726
- options.customMessages = true;
727
- webshims.reTest('form-message');
728
- webshims.error('overrideMessages is deprecated. use customMessages instead.');
729
- }
683
+
730
684
  if(options.replaceValidationUI){
731
685
  webshims.ready('DOM forms', function(){
732
686
  $(document).on('firstinvalid', function(e){
@@ -737,8 +691,47 @@ webshims.register('form-core', function($, webshims, window, document, undefined
737
691
  });
738
692
  });
739
693
  }
740
- });
694
+
695
+ /* extension, but also used to fix native implementation workaround/bugfixes */
696
+ (function(){
697
+ var firstEvent,
698
+ invalids = [],
699
+ stopSubmitTimer,
700
+ form
701
+ ;
702
+
703
+ $(document).on('invalid', function(e){
704
+ if(e.wrongWebkitInvalid){return;}
705
+ var jElm = $(e.target);
706
+
707
+
708
+ if(!firstEvent){
709
+ //trigger firstinvalid
710
+ firstEvent = $.Event('firstinvalid');
711
+ firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
712
+ var firstSystemInvalid = $.Event('firstinvalidsystem');
713
+ $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
714
+ jElm.trigger(firstEvent);
715
+ }
741
716
 
717
+ //if firstinvalid was prevented all invalids will be also prevented
718
+ if( firstEvent && firstEvent.isDefaultPrevented() ){
719
+ e.preventDefault();
720
+ }
721
+ invalids.push(e.target);
722
+ e.extraData = 'fix';
723
+ clearTimeout(stopSubmitTimer);
724
+ stopSubmitTimer = setTimeout(function(){
725
+ var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
726
+ //reset firstinvalid
727
+ firstEvent = false;
728
+ invalids = [];
729
+ $(e.target).trigger(lastEvent, lastEvent);
730
+ }, 9);
731
+ jElm = null;
732
+ });
733
+ })();
734
+ });
742
735
 
743
736
  (function($, Modernizr, webshims){
744
737
  "use strict";
@@ -774,52 +767,55 @@ webshims.register('form-core', function($, webshims, window, document, undefined
774
767
  });
775
768
  webshims.loader.loadList(['mediaelement-native-fix']);
776
769
  }
777
- }
778
-
779
- if(hasNative && !options.preferFlash){
780
- var noSwitch = {
781
- 1: 1,
782
- 2: 1
783
- };
784
- var switchOptions = function(e){
785
- var media;
786
- var parent;
787
- if(!options.preferFlash &&
770
+
771
+ if(!options.preferFlash){
772
+ var noSwitch = {
773
+ 1: 1,
774
+ 2: 1
775
+ };
776
+ var switchOptions = function(e){
777
+ var media, error, parent;
778
+ if(!options.preferFlash &&
788
779
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
789
- (media = $(e.target).closest('audio, video')) && !noSwitch[media.prop('error')]
780
+ (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
790
781
  ){
791
- $(function(){
792
- if(hasSwf && !options.preferFlash){
793
- loadSwf();
794
- webshims.ready('WINDOWLOAD '+swfType, function(){
795
- setTimeout(function(){
796
- if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
797
- options.preferFlash = true;
798
- document.removeEventListener('error', switchOptions, true);
799
- $('audio, video').each(function(){
800
- webshims.mediaelement.selectSource(this);
801
- });
802
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
803
- }
804
- }, 9);
805
- });
806
- } else{
807
- document.removeEventListener('error', switchOptions, true);
782
+ if(error == null){
783
+ webshims.warn("There was an unspecified error on a mediaelement");
784
+ return;
785
+
808
786
  }
809
- });
810
- }
811
- };
812
- document.addEventListener('error', switchOptions, true);
813
- $('audio, video').each(function(){
814
- var error = $.prop(this, 'error');
815
- if(error && !noSwitch[error]){
816
- switchOptions({target: this});
817
- return false;
818
- }
819
- });
787
+ $(function(){
788
+ if(hasSwf && !options.preferFlash){
789
+ loadSwf();
790
+ webshims.ready('WINDOWLOAD '+swfType, function(){
791
+ setTimeout(function(){
792
+ if(!options.preferFlash && webshims.mediaelement.createSWF && !media.is('.nonnative-api-active')){
793
+ options.preferFlash = true;
794
+ document.removeEventListener('error', switchOptions, true);
795
+ $('audio, video').each(function(){
796
+ webshims.mediaelement.selectSource(this);
797
+ });
798
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
799
+ }
800
+ }, 9);
801
+ });
802
+ } else{
803
+ document.removeEventListener('error', switchOptions, true);
804
+ }
805
+ });
806
+ }
807
+ };
808
+ document.addEventListener('error', switchOptions, true);
809
+ $('audio, video').each(function(){
810
+ var error = $.prop(this, 'error');
811
+ if(error && !noSwitch[error]){
812
+ switchOptions({target: this});
813
+ return false;
814
+ }
815
+ });
816
+ }
820
817
  }
821
818
 
822
-
823
819
  if(Modernizr.track && !bugs.track){
824
820
  (function(){
825
821
 
@@ -1200,63 +1196,14 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1200
1196
 
1201
1197
  });
1202
1198
 
1203
- webshims.ready('dom-support', function(){
1204
- if(!supportsLoop){
1205
- webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
1206
- }
1207
-
1208
- ['audio', 'video'].forEach(function(nodeName){
1209
- var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
1210
- prop: {
1211
- value: function(){
1212
- var data = webshims.data(this, 'mediaelement');
1213
- selectSource(this, data);
1214
- if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1215
- supLoad.prop._supvalue.apply(this, arguments);
1216
- }
1217
- }
1218
- }
1219
- });
1220
- nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
1221
- prop: {
1222
- value: function(type){
1223
- var ret = '';
1224
- if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
1225
- ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
1226
- if(ret == 'no'){
1227
- ret = '';
1228
- }
1229
- }
1230
- if(!ret && hasSwf){
1231
- type = $.trim((type || '').split(';')[0]);
1232
- if(mediaelement.swfMimeTypes.indexOf(type) != -1){
1233
- ret = 'maybe';
1234
- }
1235
- }
1236
- return ret;
1237
- }
1238
- }
1239
- });
1240
- });
1241
- webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1242
- set: function(){
1243
- var elem = this;
1244
- var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1245
- clearTimeout(baseData.loadTimer);
1246
- baseData.loadTimer = setTimeout(function(){
1247
- selectSource(elem);
1248
- elem = null;
1249
- }, 9);
1250
- }
1251
- });
1252
- });
1253
-
1199
+ var handleMedia = false;
1254
1200
  var initMediaElements = function(){
1255
1201
  var testFixMedia = function(){
1256
1202
  if(webshims.implement(this, 'mediaelement')){
1257
1203
  selectSource(this);
1258
1204
 
1259
- if(hasNative){
1205
+ //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
1206
+ if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
1260
1207
  var bufferTimer;
1261
1208
  var lastBuffered;
1262
1209
  var elem = this;
@@ -1285,7 +1232,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1285
1232
  lastBuffered = getBufferedString();
1286
1233
  }
1287
1234
  clearTimeout(bufferTimer);
1288
- bufferTimer = setTimeout(testBuffer, 999);
1235
+ bufferTimer = setTimeout(testBuffer, 400);
1289
1236
  },
1290
1237
  'emptied stalled mediaerror abort suspend': function(e){
1291
1238
  if(e.type == 'emptied'){
@@ -1302,11 +1249,62 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1302
1249
  }
1303
1250
 
1304
1251
  };
1305
- var handleMedia = false;
1252
+
1306
1253
 
1307
1254
 
1308
1255
  webshims.ready('dom-support', function(){
1309
1256
  handleMedia = true;
1257
+
1258
+ if(!supportsLoop){
1259
+ webshims.defineNodeNamesBooleanProperty(['audio', 'video'], 'loop');
1260
+ }
1261
+
1262
+ ['audio', 'video'].forEach(function(nodeName){
1263
+ var supLoad = webshims.defineNodeNameProperty(nodeName, 'load', {
1264
+ prop: {
1265
+ value: function(){
1266
+ var data = webshims.data(this, 'mediaelement');
1267
+ selectSource(this, data);
1268
+ if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
1269
+ supLoad.prop._supvalue.apply(this, arguments);
1270
+ }
1271
+ }
1272
+ }
1273
+ });
1274
+ nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
1275
+ prop: {
1276
+ value: function(type){
1277
+ var ret = '';
1278
+ if(hasNative && nativeCanPlayType[nodeName].prop._supvalue){
1279
+ ret = nativeCanPlayType[nodeName].prop._supvalue.call(this, type);
1280
+ if(ret == 'no'){
1281
+ ret = '';
1282
+ }
1283
+ }
1284
+ if(!ret && hasSwf){
1285
+ type = $.trim((type || '').split(';')[0]);
1286
+ if(mediaelement.swfMimeTypes.indexOf(type) != -1){
1287
+ ret = 'maybe';
1288
+ }
1289
+ }
1290
+ return ret;
1291
+ }
1292
+ }
1293
+ });
1294
+ });
1295
+ webshims.onNodeNamesPropertyModify(['audio', 'video'], ['src', 'poster'], {
1296
+ set: function(){
1297
+ var elem = this;
1298
+ var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
1299
+ clearTimeout(baseData.loadTimer);
1300
+ baseData.loadTimer = setTimeout(function(){
1301
+ selectSource(elem);
1302
+ elem = null;
1303
+ }, 9);
1304
+ }
1305
+ });
1306
+
1307
+
1310
1308
  webshims.addReady(function(context, insertedElement){
1311
1309
  var media = $('video, audio', context)
1312
1310
  .add(insertedElement.filter('video, audio'))