webshims-rails 1.10.11 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
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;