webshims-rails 1.10.11 → 1.11.1

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 (53) hide show
  1. checksums.yaml +8 -8
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/readme.textile +14 -1
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +2 -1
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +12 -63
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +17 -7
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +17 -3
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +11 -12
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +11 -12
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -4
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +10 -59
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +21 -71
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +17 -3
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +17 -3
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +58 -19
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +12 -67
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +58 -19
  18. data/vendor/assets/javascripts/webshims/shims/combos/21.js +47 -3
  19. data/vendor/assets/javascripts/webshims/shims/combos/23.js +11 -12
  20. data/vendor/assets/javascripts/webshims/shims/combos/24.js +324 -79
  21. data/vendor/assets/javascripts/webshims/shims/combos/25.js +63 -21
  22. data/vendor/assets/javascripts/webshims/shims/combos/26.js +5 -6
  23. data/vendor/assets/javascripts/webshims/shims/combos/27.js +5 -2
  24. data/vendor/assets/javascripts/webshims/shims/combos/28.js +47 -7
  25. data/vendor/assets/javascripts/webshims/shims/combos/3.js +1 -55
  26. data/vendor/assets/javascripts/webshims/shims/combos/30.js +1 -55
  27. data/vendor/assets/javascripts/webshims/shims/combos/31.js +1 -55
  28. data/vendor/assets/javascripts/webshims/shims/combos/4.js +0 -4
  29. data/vendor/assets/javascripts/webshims/shims/combos/5.js +17 -3
  30. data/vendor/assets/javascripts/webshims/shims/combos/6.js +17 -3
  31. data/vendor/assets/javascripts/webshims/shims/combos/7.js +12 -67
  32. data/vendor/assets/javascripts/webshims/shims/combos/8.js +12 -67
  33. data/vendor/assets/javascripts/webshims/shims/combos/9.js +17 -7
  34. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +0 -4
  35. data/vendor/assets/javascripts/webshims/shims/filereader.js +5 -2
  36. data/vendor/assets/javascripts/webshims/shims/form-core.js +1 -51
  37. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +24 -15
  38. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +6 -2
  39. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -4
  40. data/vendor/assets/javascripts/webshims/shims/form-validation.js +135 -24
  41. data/vendor/assets/javascripts/webshims/shims/form-validators.js +189 -55
  42. data/vendor/assets/javascripts/webshims/shims/forms-picker.js +4 -1
  43. data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +3 -1
  44. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +11 -12
  45. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +47 -3
  46. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +28 -8
  47. data/vendor/assets/javascripts/webshims/shims/mediagroup.js +29 -0
  48. data/vendor/assets/javascripts/webshims/shims/range-ui.js +11 -1
  49. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +17 -4
  50. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +17 -6
  51. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  52. metadata +3 -3
  53. data/vendor/assets/javascripts/webshims/shims/swf/jwwebshims.swf +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTdiZDJkNTE3NGI2M2E3YjdjOTMyYWYzODM5OWM4YWRmZjlmOGQ2Yg==
4
+ ZDQzM2Q1ZDU3NDMyYzk3MTQ4ZTk5ZWU2MTE5MDczMTM4NTY2YTA1MQ==
5
5
  data.tar.gz: !binary |-
6
- YmQ1MzQyNDk1MTZkYjIxMTI4MzAyOTY4ZGFlN2UwYjY0OGRmMmM3Yw==
6
+ ZmMyMTI4YzI3ZmE0NWRmZDczZjVjMTdlMTVlZGI2OWU3ODY4ZTI5MQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YmRjM2ZmN2Y3NjYwOWRkYzIxMzNjZjI3NTQyNDhhN2M1ZjNmZjM5ZTI4MTJk
10
- NjdiZTlkZTViNzkwZTdjYWQyOTUyMmZmYWZkMTM0ZDU5NWVmYTk1MmE4YTU0
11
- ZGJjOThjMjJkMWIyMmM5N2ZkNTgxMjQ2YmY2YWMzMzA3ZDhkMzQ=
9
+ YTZkYjFjZjU3NmIzNDc3MDdhMGM0ZTQ0OGE1NTNhOWM3ZTAxYTU0Y2I2OTcx
10
+ YjVmMmJlZTg3ZTUwYTRjYjkyYTdhNTRkMjU4MzRjZjllMGYwZjNhMzZkZjM0
11
+ YjAzOTkyMjRkYWRlNDVlNGM1Y2Q3MTliNDE2ZWE1NTEzNTBmNTI=
12
12
  data.tar.gz: !binary |-
13
- YzdiNmU1NTRhNDFmNmZmNjY2NjBjNTY1NDk5YTUzYmE4ZTRlMGIxNGY4Y2I2
14
- YWY3NGY4NzZkYmYxNzFkM2U4NmI3YzAyY2VjYzM0ZDJiYWZhNGQ2ODhjOGJj
15
- MWU0NWY2ZWEzY2RiYjBiMjM3NTc5YTk5YmI0NGFiNjg3YmJmNzY=
13
+ MjNjN2U5ZGY1OTI4ZWIxZGVlMmM0M2EzNTdkNzdmNDE5ZWE3MWFmOGUxZjVi
14
+ Nzk1ZDcwMGJiN2Y2Yjk2NGVkN2I4ZTExZjI2ZjNhNmJhZjlkZWFmZDg4NDk0
15
+ ZGZhZWFkNzM0ODFhN2UwZWE1Y2ZlZmY4NjMyYjU2OThlNDM1Zjk=
@@ -1,6 +1,6 @@
1
1
  module Webshims
2
2
  module Rails
3
- VERSION = "1.10.11"
4
- WEBSHIMS_VERSION = "1.10.11"
3
+ VERSION = "1.11.1"
4
+ WEBSHIMS_VERSION = "1.11.1"
5
5
  end
6
6
  end
data/readme.textile CHANGED
@@ -2,6 +2,19 @@ h1. Webshims-rails
2
2
 
3
3
  Easily include the "webshims library":http://aFarkas.github.com/webshim/demos/index.html (by Alexander Farkas) in your Rails 3.1+ project with the asset pipeline.
4
4
 
5
+ h2. Note on Changes in Rails 4
6
+
7
+ With the release of Rails 4 and an updated "sprockets-rails":https://github.com/rails/sprockets-rails#changes-from-rails-3x gem, only digest filenames are compiled when running rake assets:precompile (non-digest filenames are no longer compiled).
8
+
9
+ Since webshims does not support fingerprinting, this will result in 404s (missing assets) in production mode. To avoid this, you have two options:
10
+
11
+ One, turn (back) on asset compiling with non-digest filenames, with, for example, this gist: https://gist.github.com/eric1234/5692456
12
+
13
+ Or two, copy-paste the webshims directory into the public/ directory. Then, alter step 3 below to re-configure your basePath from public/assets (as it was in Rails 3.X) to public/:
14
+ <pre>
15
+ $.webshims.setOptions('basePath', '/webshims/shims/')
16
+ </pre>
17
+
5
18
  h2. Usage
6
19
 
7
20
  1. Add webshims-rails to your Gemfile for bundler: @gem 'webshims-rails'@
@@ -27,4 +40,4 @@ Users of previous webshims-rails versions should update their sprockets requires
27
40
 
28
41
  h2. License
29
42
 
30
- MIT licensed, like the Webshims library.
43
+ MIT licensed, like the Webshims library.
@@ -27,7 +27,7 @@
27
27
 
28
28
 
29
29
  var webshims = {
30
- version: '1.11.0RC1',
30
+ version: '1.11.1',
31
31
  cfg: {
32
32
 
33
33
  //addCacheBuster: false,
@@ -1247,4 +1247,5 @@
1247
1247
  webshims.polyfill(asyncWebshims.polyfill);
1248
1248
  }
1249
1249
  }
1250
+ return webshims;
1250
1251
  }));
@@ -655,62 +655,12 @@ webshims.register('form-core', function($, webshims, window, document, undefined
655
655
 
656
656
 
657
657
  $(document).on('focusin.lazyloadvalidation', function(e){
658
- if('form' in e.target && $(e.target).is(':invalid')){
658
+ if('form' in e.target && (e.target.list || $(e.target).is(':invalid'))){
659
659
  lazyLoad();
660
660
  }
661
661
  });
662
662
  webshims.ready('WINDOWLOAD', lazyLoad);
663
663
 
664
- if(options.replaceValidationUI){
665
- webshims.ready('DOM forms', function(){
666
- $(document).on('firstinvalid', function(e){
667
- if(!e.isInvalidUIPrevented()){
668
- e.preventDefault();
669
- webshims.validityAlert.showFor( e.target );
670
- }
671
- });
672
- });
673
- }
674
-
675
- /* extension, but also used to fix native implementation workaround/bugfixes */
676
- (function(){
677
- var firstEvent,
678
- invalids = [],
679
- stopSubmitTimer,
680
- form
681
- ;
682
-
683
- $(document).on('invalid', function(e){
684
- if(e.wrongWebkitInvalid){return;}
685
- var jElm = $(e.target);
686
-
687
-
688
- if(!firstEvent){
689
- //trigger firstinvalid
690
- firstEvent = $.Event('firstinvalid');
691
- firstEvent.isInvalidUIPrevented = e.isDefaultPrevented;
692
- var firstSystemInvalid = $.Event('firstinvalidsystem');
693
- $(document).triggerHandler(firstSystemInvalid, {element: e.target, form: e.target.form, isInvalidUIPrevented: e.isDefaultPrevented});
694
- jElm.trigger(firstEvent);
695
- }
696
-
697
- //if firstinvalid was prevented all invalids will be also prevented
698
- if( firstEvent && firstEvent.isDefaultPrevented() ){
699
- e.preventDefault();
700
- }
701
- invalids.push(e.target);
702
- e.extraData = 'fix';
703
- clearTimeout(stopSubmitTimer);
704
- stopSubmitTimer = setTimeout(function(){
705
- var lastEvent = {type: 'lastinvalid', cancelable: false, invalidlist: $(invalids)};
706
- //reset firstinvalid
707
- firstEvent = false;
708
- invalids = [];
709
- $(e.target).trigger(lastEvent, lastEvent);
710
- }, 9);
711
- jElm = null;
712
- });
713
- })();
714
664
  });
715
665
 
716
666
  (function(Modernizr, webshims){
@@ -739,6 +689,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
739
689
  if(hasNative){
740
690
  var videoElem = document.createElement('video');
741
691
  Modernizr.videoBuffered = ('buffered' in videoElem);
692
+ Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
742
693
  supportsLoop = ('loop' in videoElem);
743
694
 
744
695
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
@@ -752,20 +703,15 @@ webshims.register('form-core', function($, webshims, window, document, undefined
752
703
 
753
704
  if(!options.preferFlash){
754
705
  var noSwitch = {
755
- 1: 1,
756
- 2: 1
706
+ 1: 1
757
707
  };
758
708
  var switchOptions = function(e){
759
709
  var media, error, parent;
760
710
  if(!options.preferFlash &&
761
711
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
762
- (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
712
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
763
713
  ){
764
- if(error == null){
765
- webshims.warn("There was an unspecified error on a mediaelement");
766
- return;
767
-
768
- }
714
+
769
715
  $(function(){
770
716
  if(hasSwf && !options.preferFlash){
771
717
  loadSwf();
@@ -777,7 +723,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
777
723
  $('audio, video').each(function(){
778
724
  webshims.mediaelement.selectSource(this);
779
725
  });
780
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
726
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
781
727
  }
782
728
  }, 9);
783
729
  });
@@ -983,7 +929,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
983
929
  if(src.indexOf('rtmp') === 0){
984
930
  return nodeName+'/rtmp';
985
931
  }
986
- src = src.split('?')[0].split('.');
932
+ src = src.split('?')[0].split('#')[0].split('.');
987
933
  src = src[src.length - 1];
988
934
  var mt;
989
935
 
@@ -1102,7 +1048,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1102
1048
  webshims.error('mediaelementError: '+ message);
1103
1049
  setTimeout(function(){
1104
1050
  if($(elem).data('mediaerror')){
1105
- $(elem).trigger('mediaerror');
1051
+ $(elem).addClass('media-error').trigger('mediaerror');
1106
1052
  }
1107
1053
  }, 1);
1108
1054
  }
@@ -1166,6 +1112,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1166
1112
  var parent = elem.parentNode;
1167
1113
 
1168
1114
  clearTimeout(baseData.loadTimer);
1115
+ $(elem).removeClass('media-error');
1169
1116
  $.data(elem, 'mediaerror', false);
1170
1117
 
1171
1118
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
@@ -1193,7 +1140,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1193
1140
  var testFixMedia = function(){
1194
1141
  if(webshims.implement(this, 'mediaelement')){
1195
1142
  selectSource(this);
1196
-
1143
+ if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
1144
+ $.prop(this, 'muted', true);
1145
+ }
1197
1146
  //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
1198
1147
  if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
1199
1148
  var bufferTimer;
@@ -13,10 +13,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
13
13
  webshims.error("Webshims needs jQuery 1.8+ to work properly. Please update your jQuery version or downgrade webshims.");
14
14
  }
15
15
 
16
- if(webshims.cfg.extendNative === undefined){
17
- webshims.warn("extendNative configuration was set to false by default with this release. In case you rely on it set it to 'true' otherwise to 'false'. See http://bit.ly/16OOTQO");
18
- }
19
-
20
16
  if (!webshims.cfg.no$Switch) {
21
17
  var switch$ = function(){
22
18
  if (window.jQuery && (!window.$ || window.jQuery == window.$) && !window.jQuery.webshims) {
@@ -1271,7 +1267,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1271
1267
  this.value(this.options.value, true);
1272
1268
  },
1273
1269
  step: function(val){
1274
- this.options.step = val == 'any' ? 'any' : retDefault(val, 1);
1270
+ var o = this.options;
1271
+ var step = val == 'any' ? 'any' : retDefault(val, 1);
1272
+
1273
+ if(o.stepping){
1274
+ if(step != 'any' && o.stepping % step){
1275
+ webshims.error('wrong stepping value for type range:'+ (o.stepping % step));
1276
+ } else {
1277
+ step = o.stepping;
1278
+ }
1279
+ }
1280
+ o.step = step;
1275
1281
  this.value(this.options.value);
1276
1282
  },
1277
1283
 
@@ -1992,6 +1998,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1992
1998
  fVal[0] = tmp;
1993
1999
  }
1994
2000
  val = this.date(fVal[0], o) +'T'+ this.time(fVal[1], o);
2001
+ } else if (fVal.length == 3) {
2002
+ val = this.date(fVal[0], o) +'T'+ this.time(fVal[1]+fVal[2], o);
1995
2003
  }
1996
2004
  return val;
1997
2005
  },
@@ -2848,7 +2856,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2848
2856
 
2849
2857
  picker._actions = {
2850
2858
  changeInput: function(val, popover, data){
2851
- picker._actions.cancel(val, popover, data);
2859
+ if(!data.options.noChangeDismiss){
2860
+ picker._actions.cancel(val, popover, data);
2861
+ }
2852
2862
  data.setChange(val);
2853
2863
  },
2854
2864
  cancel: function(val, popover, data){
@@ -3395,7 +3405,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
3395
3405
  });
3396
3406
  }
3397
3407
 
3398
- var isStupid = modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && (/MSIE 1[0|1]\.\d/.test(navigator.userAgent) || /Trident\/7\.0/.test(navigator.userAgent));
3408
+ var isStupid = modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)));
3399
3409
  ['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
3400
3410
  if(!modernizrInputTypes[name] || options.replaceUI || (name == 'number' && isStupid)){
3401
3411
  extendType(name, {
@@ -177,7 +177,17 @@
177
177
  this.value(this.options.value, true);
178
178
  },
179
179
  step: function(val){
180
- this.options.step = val == 'any' ? 'any' : retDefault(val, 1);
180
+ var o = this.options;
181
+ var step = val == 'any' ? 'any' : retDefault(val, 1);
182
+
183
+ if(o.stepping){
184
+ if(step != 'any' && o.stepping % step){
185
+ webshims.error('wrong stepping value for type range:'+ (o.stepping % step));
186
+ } else {
187
+ step = o.stepping;
188
+ }
189
+ }
190
+ o.step = step;
181
191
  this.value(this.options.value);
182
192
  },
183
193
 
@@ -898,6 +908,8 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
898
908
  fVal[0] = tmp;
899
909
  }
900
910
  val = this.date(fVal[0], o) +'T'+ this.time(fVal[1], o);
911
+ } else if (fVal.length == 3) {
912
+ val = this.date(fVal[0], o) +'T'+ this.time(fVal[1]+fVal[2], o);
901
913
  }
902
914
  return val;
903
915
  },
@@ -1754,7 +1766,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
1754
1766
 
1755
1767
  picker._actions = {
1756
1768
  changeInput: function(val, popover, data){
1757
- picker._actions.cancel(val, popover, data);
1769
+ if(!data.options.noChangeDismiss){
1770
+ picker._actions.cancel(val, popover, data);
1771
+ }
1758
1772
  data.setChange(val);
1759
1773
  },
1760
1774
  cancel: function(val, popover, data){
@@ -2301,7 +2315,7 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
2301
2315
  });
2302
2316
  }
2303
2317
 
2304
- var isStupid = modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && (/MSIE 1[0|1]\.\d/.test(navigator.userAgent) || /Trident\/7\.0/.test(navigator.userAgent));
2318
+ var isStupid = modernizrInputTypes.number && navigator.userAgent.indexOf('Touch') == -1 && ((/MSIE 1[0|1]\.\d/.test(navigator.userAgent)) || (/Trident\/7\.0/.test(navigator.userAgent)));
2305
2319
  ['number', 'time', 'month', 'date', 'color', 'datetime-local'].forEach(function(name){
2306
2320
  if(!modernizrInputTypes[name] || options.replaceUI || (name == 'number' && isStupid)){
2307
2321
  extendType(name, {
@@ -476,6 +476,7 @@ var swfmini = function() {
476
476
  if(hasNative){
477
477
  var videoElem = document.createElement('video');
478
478
  Modernizr.videoBuffered = ('buffered' in videoElem);
479
+ Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
479
480
  supportsLoop = ('loop' in videoElem);
480
481
 
481
482
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
@@ -489,20 +490,15 @@ var swfmini = function() {
489
490
 
490
491
  if(!options.preferFlash){
491
492
  var noSwitch = {
492
- 1: 1,
493
- 2: 1
493
+ 1: 1
494
494
  };
495
495
  var switchOptions = function(e){
496
496
  var media, error, parent;
497
497
  if(!options.preferFlash &&
498
498
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
499
- (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
499
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
500
500
  ){
501
- if(error == null){
502
- webshims.warn("There was an unspecified error on a mediaelement");
503
- return;
504
-
505
- }
501
+
506
502
  $(function(){
507
503
  if(hasSwf && !options.preferFlash){
508
504
  loadSwf();
@@ -514,7 +510,7 @@ var swfmini = function() {
514
510
  $('audio, video').each(function(){
515
511
  webshims.mediaelement.selectSource(this);
516
512
  });
517
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
513
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
518
514
  }
519
515
  }, 9);
520
516
  });
@@ -720,7 +716,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
720
716
  if(src.indexOf('rtmp') === 0){
721
717
  return nodeName+'/rtmp';
722
718
  }
723
- src = src.split('?')[0].split('.');
719
+ src = src.split('?')[0].split('#')[0].split('.');
724
720
  src = src[src.length - 1];
725
721
  var mt;
726
722
 
@@ -839,7 +835,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
839
835
  webshims.error('mediaelementError: '+ message);
840
836
  setTimeout(function(){
841
837
  if($(elem).data('mediaerror')){
842
- $(elem).trigger('mediaerror');
838
+ $(elem).addClass('media-error').trigger('mediaerror');
843
839
  }
844
840
  }, 1);
845
841
  }
@@ -903,6 +899,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
903
899
  var parent = elem.parentNode;
904
900
 
905
901
  clearTimeout(baseData.loadTimer);
902
+ $(elem).removeClass('media-error');
906
903
  $.data(elem, 'mediaerror', false);
907
904
 
908
905
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
@@ -930,7 +927,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
930
927
  var testFixMedia = function(){
931
928
  if(webshims.implement(this, 'mediaelement')){
932
929
  selectSource(this);
933
-
930
+ if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
931
+ $.prop(this, 'muted', true);
932
+ }
934
933
  //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
935
934
  if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
936
935
  var bufferTimer;
@@ -24,6 +24,7 @@
24
24
  if(hasNative){
25
25
  var videoElem = document.createElement('video');
26
26
  Modernizr.videoBuffered = ('buffered' in videoElem);
27
+ Modernizr.mediaDefaultMuted = ('defaultMuted' in videoElem);
27
28
  supportsLoop = ('loop' in videoElem);
28
29
 
29
30
  webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
@@ -37,20 +38,15 @@
37
38
 
38
39
  if(!options.preferFlash){
39
40
  var noSwitch = {
40
- 1: 1,
41
- 2: 1
41
+ 1: 1
42
42
  };
43
43
  var switchOptions = function(e){
44
44
  var media, error, parent;
45
45
  if(!options.preferFlash &&
46
46
  ($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source:last', parent)[0] == e.target)) &&
47
- (media = $(e.target).closest('audio, video')) && !noSwitch[(error = media.prop('error'))]
47
+ (media = $(e.target).closest('audio, video')) && (error = media.prop('error')) && !noSwitch[error.code]
48
48
  ){
49
- if(error == null){
50
- webshims.warn("There was an unspecified error on a mediaelement");
51
- return;
52
-
53
- }
49
+
54
50
  $(function(){
55
51
  if(hasSwf && !options.preferFlash){
56
52
  loadSwf();
@@ -62,7 +58,7 @@
62
58
  $('audio, video').each(function(){
63
59
  webshims.mediaelement.selectSource(this);
64
60
  });
65
- webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error'));
61
+ webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src+" Mediaerror: "+ media.prop('error')+ 'first error: '+ error);
66
62
  }
67
63
  }, 9);
68
64
  });
@@ -268,7 +264,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
268
264
  if(src.indexOf('rtmp') === 0){
269
265
  return nodeName+'/rtmp';
270
266
  }
271
- src = src.split('?')[0].split('.');
267
+ src = src.split('?')[0].split('#')[0].split('.');
272
268
  src = src[src.length - 1];
273
269
  var mt;
274
270
 
@@ -387,7 +383,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
387
383
  webshims.error('mediaelementError: '+ message);
388
384
  setTimeout(function(){
389
385
  if($(elem).data('mediaerror')){
390
- $(elem).trigger('mediaerror');
386
+ $(elem).addClass('media-error').trigger('mediaerror');
391
387
  }
392
388
  }, 1);
393
389
  }
@@ -451,6 +447,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
451
447
  var parent = elem.parentNode;
452
448
 
453
449
  clearTimeout(baseData.loadTimer);
450
+ $(elem).removeClass('media-error');
454
451
  $.data(elem, 'mediaerror', false);
455
452
 
456
453
  if(!_srces.length || !parent || parent.nodeType != 1 || stopParent.test(parent.nodeName || '')){return;}
@@ -478,7 +475,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
478
475
  var testFixMedia = function(){
479
476
  if(webshims.implement(this, 'mediaelement')){
480
477
  selectSource(this);
481
-
478
+ if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
479
+ $.prop(this, 'muted', true);
480
+ }
482
481
  //fixes for FF 12 and IE9/10 || does not hurt, if run in other browsers
483
482
  if(hasNative && (!supportsLoop || ('ActiveXObject' in window))){
484
483
  var bufferTimer;