webshims-rails 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
  3. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +1 -1
  4. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +1 -1
  5. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +1 -1
  6. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +1 -1
  7. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +1 -1
  8. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +1 -1
  9. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +1 -1
  10. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +1 -1
  11. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +1 -1
  12. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +1 -1
  13. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +1 -1
  14. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +1 -1
  15. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +1 -1
  16. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +1 -1
  17. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +1 -1
  18. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +1 -1
  19. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +1 -1
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +1 -1
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +1 -1
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +1 -1
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +1 -1
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +1 -1
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +1 -1
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +1 -1
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +1 -1
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +1 -1
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +1 -1
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +1 -1
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +1 -1
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +1 -1
  33. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +1 -1
  34. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +1 -1
  35. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +1 -1
  36. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +1 -1
  37. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +1 -1
  38. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +1 -1
  39. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +1 -1
  40. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +1 -1
  41. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +1 -1
  42. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +1 -1
  43. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +1 -1
  44. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +1 -1
  45. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +1 -1
  46. data/vendor/assets/javascripts/webshims/minified/shims/track.js +1 -1
  47. data/vendor/assets/javascripts/webshims/polyfiller.js +10 -7
  48. data/vendor/assets/javascripts/webshims/shims/combos/1.js +51 -48
  49. data/vendor/assets/javascripts/webshims/shims/combos/10.js +126 -105
  50. data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -47
  51. data/vendor/assets/javascripts/webshims/shims/combos/12.js +97 -86
  52. data/vendor/assets/javascripts/webshims/shims/combos/13.js +49 -45
  53. data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -2
  54. data/vendor/assets/javascripts/webshims/shims/combos/15.js +1 -1
  55. data/vendor/assets/javascripts/webshims/shims/combos/16.js +168 -155
  56. data/vendor/assets/javascripts/webshims/shims/combos/17.js +168 -155
  57. data/vendor/assets/javascripts/webshims/shims/combos/18.js +9 -24
  58. data/vendor/assets/javascripts/webshims/shims/combos/19.js +121 -116
  59. data/vendor/assets/javascripts/webshims/shims/combos/2.js +82 -93
  60. data/vendor/assets/javascripts/webshims/shims/combos/20.js +75 -57
  61. data/vendor/assets/javascripts/webshims/shims/combos/21.js +11 -24
  62. data/vendor/assets/javascripts/webshims/shims/combos/22.js +77 -60
  63. data/vendor/assets/javascripts/webshims/shims/combos/23.js +59 -65
  64. data/vendor/assets/javascripts/webshims/shims/combos/24.js +169 -157
  65. data/vendor/assets/javascripts/webshims/shims/combos/25.js +99 -87
  66. data/vendor/assets/javascripts/webshims/shims/combos/26.js +170 -156
  67. data/vendor/assets/javascripts/webshims/shims/combos/27.js +128 -106
  68. data/vendor/assets/javascripts/webshims/shims/combos/3.js +83 -95
  69. data/vendor/assets/javascripts/webshims/shims/combos/4.js +71 -69
  70. data/vendor/assets/javascripts/webshims/shims/combos/5.js +71 -69
  71. data/vendor/assets/javascripts/webshims/shims/combos/59.js +72 -71
  72. data/vendor/assets/javascripts/webshims/shims/combos/6.js +8 -22
  73. data/vendor/assets/javascripts/webshims/shims/combos/7.js +8 -22
  74. data/vendor/assets/javascripts/webshims/shims/combos/8.js +97 -86
  75. data/vendor/assets/javascripts/webshims/shims/combos/9.js +124 -102
  76. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +49 -45
  77. data/vendor/assets/javascripts/webshims/shims/es5.js +2 -3
  78. data/vendor/assets/javascripts/webshims/shims/form-core.js +72 -70
  79. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  80. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +8 -22
  81. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +11 -24
  82. data/vendor/assets/javascripts/webshims/shims/geolocation.js +1 -1
  83. data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
  84. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +48 -41
  85. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +26 -15
  86. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +27 -16
  87. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +18 -6
  88. data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -1
  89. data/vendor/assets/javascripts/webshims/shims/track.js +2 -1
  90. metadata +2 -2
@@ -16,6 +16,11 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
16
16
  var singleVal = function(elem, name, val, pass, _argless){
17
17
  return (_argless) ? oldVal.call($(elem)) : oldVal.call($(elem), val);
18
18
  };
19
+
20
+ $.fn.onTrigger = function(evt, fn){
21
+ return this.on(evt, fn).each(fn);
22
+ };
23
+
19
24
  $.fn.val = function(val){
20
25
  var elem = this[0];
21
26
  if(arguments.length && val == null){
@@ -210,14 +215,14 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
210
215
  });
211
216
 
212
217
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
213
- var isExtendNativeSave = (!$.browser.msie || parseInt($.browser.version, 10) > 8);
218
+ var isExtendNativeSave = Modernizr.ES5;
214
219
  var extendNativeValue = (function(){
215
220
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
216
221
  var has = Object.prototype.hasOwnProperty;
217
222
  return function(nodeName, prop, desc){
218
- var elem = document.createElement(nodeName);
219
- var elemProto = webshims.getPrototypeOf(elem);
220
- if( isExtendNativeSave && elemProto && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
223
+ var elem;
224
+ var elemProto;
225
+ if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
221
226
  var sup = elem[prop];
222
227
  desc._supvalue = function(){
223
228
  if(sup && sup.apply){
@@ -417,7 +422,7 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
417
422
  docObserve.width = docObserve.getWidth();
418
423
 
419
424
  }
420
- $.event.trigger('updateshadowdom');
425
+ $(document).triggerHandler('updateshadowdom');
421
426
  }, (e.type == 'resize') ? 50 : 9);
422
427
  },
423
428
  _create: function(){
@@ -461,7 +466,6 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
461
466
  };
462
467
 
463
468
 
464
- $.event.customEvent.updateshadowdom = true;
465
469
  webshims.docObserve = function(){
466
470
  webshims.ready('DOM', function(){
467
471
  docObserve.start();
@@ -905,47 +909,47 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
905
909
  });
906
910
  //html5a11y
907
911
  (function($, document){
908
- var browserVersion = $.webshims.browserVersion;
909
- if($.browser.mozilla && browserVersion > 5){return;}
910
- if (!$.browser.msie || (browserVersion < 12 && browserVersion > 7)) {
911
- var elemMappings = {
912
- article: "article",
913
- aside: "complementary",
914
- section: "region",
915
- nav: "navigation",
916
- address: "contentinfo"
917
- };
918
- var addRole = function(elem, role){
919
- var hasRole = elem.getAttribute('role');
920
- if (!hasRole) {
921
- elem.setAttribute('role', role);
922
- }
923
- };
924
-
925
- $.webshims.addReady(function(context, contextElem){
926
- $.each(elemMappings, function(name, role){
927
- var elems = $(name, context).add(contextElem.filter(name));
928
- for (var i = 0, len = elems.length; i < len; i++) {
929
- addRole(elems[i], role);
930
- }
931
- });
932
- if (context === document) {
933
- var header = document.getElementsByTagName('header')[0];
934
- var footers = document.getElementsByTagName('footer');
935
- var footerLen = footers.length;
936
- if (header && !$(header).closest('section, article')[0]) {
937
- addRole(header, 'banner');
938
- }
939
- if (!footerLen) {
940
- return;
941
- }
942
- var footer = footers[footerLen - 1];
943
- if (!$(footer).closest('section, article')[0]) {
944
- addRole(footer, 'contentinfo');
945
- }
912
+ //if we support basic styleing or do not support ARIA (assumed) abort
913
+ if(!Modernizr.localstorage || ('hidden' in document.createElement('a'))){return;}
914
+
915
+ var elemMappings = {
916
+ article: "article",
917
+ aside: "complementary",
918
+ section: "region",
919
+ nav: "navigation",
920
+ address: "contentinfo"
921
+ };
922
+ var addRole = function(elem, role){
923
+ var hasRole = elem.getAttribute('role');
924
+ if (!hasRole) {
925
+ elem.setAttribute('role', role);
926
+ }
927
+ };
928
+
929
+ $.webshims.addReady(function(context, contextElem){
930
+ $.each(elemMappings, function(name, role){
931
+ var elems = $(name, context).add(contextElem.filter(name));
932
+ for (var i = 0, len = elems.length; i < len; i++) {
933
+ addRole(elems[i], role);
946
934
  }
947
935
  });
948
- }
936
+ if (context === document) {
937
+ var header = document.getElementsByTagName('header')[0];
938
+ var footers = document.getElementsByTagName('footer');
939
+ var footerLen = footers.length;
940
+ if (header && !$(header).closest('section, article')[0]) {
941
+ addRole(header, 'banner');
942
+ }
943
+ if (!footerLen) {
944
+ return;
945
+ }
946
+ var footer = footers[footerLen - 1];
947
+ if (!$(footer).closest('section, article')[0]) {
948
+ addRole(footer, 'contentinfo');
949
+ }
950
+ }
951
+ });
952
+
949
953
  })(jQuery, document);
950
954
 
951
955
  jQuery.webshims.register('form-datalist', function($, webshims, window, document, undefined){
@@ -1166,7 +1170,6 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
1166
1170
  range: 1,
1167
1171
  date: 1
1168
1172
  };
1169
- var lteie6 = ($.browser.msie && parseInt($.browser.version, 10) < 7);
1170
1173
  var globStoredOptions = {};
1171
1174
  var getStoredOptions = function(name){
1172
1175
  if(!name){return [];}
@@ -1450,7 +1453,7 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
1450
1453
  this.arrayOptions = allOptions;
1451
1454
  this.shadowList.html('<div class="datalist-outer-box"><div class="datalist-box"><ul role="list">'+ list.join("\n") +'</ul></div></div>');
1452
1455
 
1453
- if($.fn.bgIframe && lteie6){
1456
+ if($.fn.bgIframe){
1454
1457
  this.shadowList.bgIframe();
1455
1458
  }
1456
1459
 
@@ -16,6 +16,11 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
16
16
  var singleVal = function(elem, name, val, pass, _argless){
17
17
  return (_argless) ? oldVal.call($(elem)) : oldVal.call($(elem), val);
18
18
  };
19
+
20
+ $.fn.onTrigger = function(evt, fn){
21
+ return this.on(evt, fn).each(fn);
22
+ };
23
+
19
24
  $.fn.val = function(val){
20
25
  var elem = this[0];
21
26
  if(arguments.length && val == null){
@@ -210,14 +215,14 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
210
215
  });
211
216
 
212
217
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
213
- var isExtendNativeSave = (!$.browser.msie || parseInt($.browser.version, 10) > 8);
218
+ var isExtendNativeSave = Modernizr.ES5;
214
219
  var extendNativeValue = (function(){
215
220
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
216
221
  var has = Object.prototype.hasOwnProperty;
217
222
  return function(nodeName, prop, desc){
218
- var elem = document.createElement(nodeName);
219
- var elemProto = webshims.getPrototypeOf(elem);
220
- if( isExtendNativeSave && elemProto && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
223
+ var elem;
224
+ var elemProto;
225
+ if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
221
226
  var sup = elem[prop];
222
227
  desc._supvalue = function(){
223
228
  if(sup && sup.apply){
@@ -417,7 +422,7 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
417
422
  docObserve.width = docObserve.getWidth();
418
423
 
419
424
  }
420
- $.event.trigger('updateshadowdom');
425
+ $(document).triggerHandler('updateshadowdom');
421
426
  }, (e.type == 'resize') ? 50 : 9);
422
427
  },
423
428
  _create: function(){
@@ -461,7 +466,6 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
461
466
  };
462
467
 
463
468
 
464
- $.event.customEvent.updateshadowdom = true;
465
469
  webshims.docObserve = function(){
466
470
  webshims.ready('DOM', function(){
467
471
  docObserve.start();
@@ -905,47 +909,47 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
905
909
  });
906
910
  //html5a11y
907
911
  (function($, document){
908
- var browserVersion = $.webshims.browserVersion;
909
- if($.browser.mozilla && browserVersion > 5){return;}
910
- if (!$.browser.msie || (browserVersion < 12 && browserVersion > 7)) {
911
- var elemMappings = {
912
- article: "article",
913
- aside: "complementary",
914
- section: "region",
915
- nav: "navigation",
916
- address: "contentinfo"
917
- };
918
- var addRole = function(elem, role){
919
- var hasRole = elem.getAttribute('role');
920
- if (!hasRole) {
921
- elem.setAttribute('role', role);
922
- }
923
- };
924
-
925
- $.webshims.addReady(function(context, contextElem){
926
- $.each(elemMappings, function(name, role){
927
- var elems = $(name, context).add(contextElem.filter(name));
928
- for (var i = 0, len = elems.length; i < len; i++) {
929
- addRole(elems[i], role);
930
- }
931
- });
932
- if (context === document) {
933
- var header = document.getElementsByTagName('header')[0];
934
- var footers = document.getElementsByTagName('footer');
935
- var footerLen = footers.length;
936
- if (header && !$(header).closest('section, article')[0]) {
937
- addRole(header, 'banner');
938
- }
939
- if (!footerLen) {
940
- return;
941
- }
942
- var footer = footers[footerLen - 1];
943
- if (!$(footer).closest('section, article')[0]) {
944
- addRole(footer, 'contentinfo');
945
- }
912
+ //if we support basic styleing or do not support ARIA (assumed) abort
913
+ if(!Modernizr.localstorage || ('hidden' in document.createElement('a'))){return;}
914
+
915
+ var elemMappings = {
916
+ article: "article",
917
+ aside: "complementary",
918
+ section: "region",
919
+ nav: "navigation",
920
+ address: "contentinfo"
921
+ };
922
+ var addRole = function(elem, role){
923
+ var hasRole = elem.getAttribute('role');
924
+ if (!hasRole) {
925
+ elem.setAttribute('role', role);
926
+ }
927
+ };
928
+
929
+ $.webshims.addReady(function(context, contextElem){
930
+ $.each(elemMappings, function(name, role){
931
+ var elems = $(name, context).add(contextElem.filter(name));
932
+ for (var i = 0, len = elems.length; i < len; i++) {
933
+ addRole(elems[i], role);
946
934
  }
947
935
  });
948
- }
936
+ if (context === document) {
937
+ var header = document.getElementsByTagName('header')[0];
938
+ var footers = document.getElementsByTagName('footer');
939
+ var footerLen = footers.length;
940
+ if (header && !$(header).closest('section, article')[0]) {
941
+ addRole(header, 'banner');
942
+ }
943
+ if (!footerLen) {
944
+ return;
945
+ }
946
+ var footer = footers[footerLen - 1];
947
+ if (!$(footer).closest('section, article')[0]) {
948
+ addRole(footer, 'contentinfo');
949
+ }
950
+ }
951
+ });
952
+
949
953
  })(jQuery, document);
950
954
 
951
955
  jQuery.webshims.register('details', function($, webshims, window, doc, undefined, options){
@@ -1149,7 +1153,9 @@ jQuery.webshims.register('details', function($, webshims, window, doc, undefined
1149
1153
  if(hasSwf && !options.preferFlash && webshims.mediaelement.createSWF && !$(e.target).closest('audio, video').is('.nonnative-api-active')){
1150
1154
  options.preferFlash = true;
1151
1155
  document.removeEventListener('error', switchOptions, true);
1152
- $('audio, video').mediaLoad();
1156
+ $('audio, video').each(function(){
1157
+ webshims.mediaelement.selectSource(this);
1158
+ });
1153
1159
  webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src);
1154
1160
  } else if(!hasSwf){
1155
1161
  document.removeEventListener('error', switchOptions, true);
@@ -1553,7 +1559,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1553
1559
  data = data || webshims.data(elem, 'mediaelement');
1554
1560
  stepSources(elem, data, options.preferFlash || undefined, _srces);
1555
1561
  };
1556
-
1562
+ mediaelement.selectSource = selectSource;
1557
1563
 
1558
1564
  $(document).on('ended', function(e){
1559
1565
  var data = webshims.data(e.target, 'mediaelement');
@@ -1619,52 +1625,57 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1619
1625
  var media = $('video, audio', context)
1620
1626
  .add(insertedElement.filter('video, audio'))
1621
1627
  .each(function(){
1622
- if($.browser.msie && webshims.browserVersion > 8 && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])')){
1628
+ var data = webshims.data(this, 'mediaelement');
1629
+
1630
+ if(hasNative && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])') && (!data || data.isActive == 'html5')){
1631
+ //IE controls not visible bug
1623
1632
  $(this).prop('preload', 'metadata').mediaLoad();
1624
1633
  } else {
1625
- selectSource(this);
1634
+ selectSource(this, data);
1626
1635
  }
1627
1636
 
1628
-
1629
-
1630
1637
  if(hasNative){
1631
- var bufferTimer;
1632
- var lastBuffered;
1633
- var elem = this;
1634
- var getBufferedString = function(){
1635
- var buffered = $.prop(elem, 'buffered');
1636
- if(!buffered){return;}
1637
- var bufferString = "";
1638
- for(var i = 0, len = buffered.length; i < len;i++){
1639
- bufferString += buffered.end(i);
1640
- }
1641
- return bufferString;
1642
- };
1643
- var testBuffer = function(){
1644
- var buffered = getBufferedString();
1645
- if(buffered != lastBuffered){
1646
- lastBuffered = buffered;
1647
- $(elem).triggerHandler('progress');
1648
- }
1649
- };
1650
1638
 
1651
- $(this)
1652
- .on({
1653
- 'play loadstart progress': function(e){
1654
- if(e.type == 'progress'){
1655
- lastBuffered = getBufferedString();
1656
- }
1657
- clearTimeout(bufferTimer);
1658
- bufferTimer = setTimeout(testBuffer, 999);
1659
- },
1660
- 'emptied stalled mediaerror abort suspend': function(e){
1661
- if(e.type == 'emptied'){
1662
- lastBuffered = false;
1663
- }
1664
- clearTimeout(bufferTimer);
1639
+ //FF progress bug
1640
+ (function(){
1641
+ var bufferTimer;
1642
+ var lastBuffered;
1643
+ var elem = this;
1644
+ var getBufferedString = function(){
1645
+ var buffered = $.prop(elem, 'buffered');
1646
+ if(!buffered){return;}
1647
+ var bufferString = "";
1648
+ for(var i = 0, len = buffered.length; i < len;i++){
1649
+ bufferString += buffered.end(i);
1665
1650
  }
1666
- })
1667
- ;
1651
+ return bufferString;
1652
+ };
1653
+ var testBuffer = function(){
1654
+ var buffered = getBufferedString();
1655
+ if(buffered != lastBuffered){
1656
+ lastBuffered = buffered;
1657
+ $(elem).triggerHandler('progress');
1658
+ }
1659
+ };
1660
+
1661
+ $(this)
1662
+ .on({
1663
+ 'play loadstart progress': function(e){
1664
+ if(e.type == 'progress'){
1665
+ lastBuffered = getBufferedString();
1666
+ }
1667
+ clearTimeout(bufferTimer);
1668
+ bufferTimer = setTimeout(testBuffer, 999);
1669
+ },
1670
+ 'emptied stalled mediaerror abort suspend': function(e){
1671
+ if(e.type == 'emptied'){
1672
+ lastBuffered = false;
1673
+ }
1674
+ clearTimeout(bufferTimer);
1675
+ }
1676
+ })
1677
+ ;
1678
+ })();
1668
1679
  }
1669
1680
 
1670
1681
  })
@@ -16,6 +16,11 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
16
16
  var singleVal = function(elem, name, val, pass, _argless){
17
17
  return (_argless) ? oldVal.call($(elem)) : oldVal.call($(elem), val);
18
18
  };
19
+
20
+ $.fn.onTrigger = function(evt, fn){
21
+ return this.on(evt, fn).each(fn);
22
+ };
23
+
19
24
  $.fn.val = function(val){
20
25
  var elem = this[0];
21
26
  if(arguments.length && val == null){
@@ -210,14 +215,14 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
210
215
  });
211
216
 
212
217
  //see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
213
- var isExtendNativeSave = (!$.browser.msie || parseInt($.browser.version, 10) > 8);
218
+ var isExtendNativeSave = Modernizr.ES5;
214
219
  var extendNativeValue = (function(){
215
220
  var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
216
221
  var has = Object.prototype.hasOwnProperty;
217
222
  return function(nodeName, prop, desc){
218
- var elem = document.createElement(nodeName);
219
- var elemProto = webshims.getPrototypeOf(elem);
220
- if( isExtendNativeSave && elemProto && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
223
+ var elem;
224
+ var elemProto;
225
+ if( isExtendNativeSave && (elem = document.createElement(nodeName)) && (elemProto = webshims.getPrototypeOf(elem)) && UNKNOWN !== elemProto && ( !elem[prop] || !has.call(elem, prop) ) ){
221
226
  var sup = elem[prop];
222
227
  desc._supvalue = function(){
223
228
  if(sup && sup.apply){
@@ -417,7 +422,7 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
417
422
  docObserve.width = docObserve.getWidth();
418
423
 
419
424
  }
420
- $.event.trigger('updateshadowdom');
425
+ $(document).triggerHandler('updateshadowdom');
421
426
  }, (e.type == 'resize') ? 50 : 9);
422
427
  },
423
428
  _create: function(){
@@ -461,7 +466,6 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
461
466
  };
462
467
 
463
468
 
464
- $.event.customEvent.updateshadowdom = true;
465
469
  webshims.docObserve = function(){
466
470
  webshims.ready('DOM', function(){
467
471
  docObserve.start();
@@ -905,47 +909,47 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
905
909
  });
906
910
  //html5a11y
907
911
  (function($, document){
908
- var browserVersion = $.webshims.browserVersion;
909
- if($.browser.mozilla && browserVersion > 5){return;}
910
- if (!$.browser.msie || (browserVersion < 12 && browserVersion > 7)) {
911
- var elemMappings = {
912
- article: "article",
913
- aside: "complementary",
914
- section: "region",
915
- nav: "navigation",
916
- address: "contentinfo"
917
- };
918
- var addRole = function(elem, role){
919
- var hasRole = elem.getAttribute('role');
920
- if (!hasRole) {
921
- elem.setAttribute('role', role);
922
- }
923
- };
924
-
925
- $.webshims.addReady(function(context, contextElem){
926
- $.each(elemMappings, function(name, role){
927
- var elems = $(name, context).add(contextElem.filter(name));
928
- for (var i = 0, len = elems.length; i < len; i++) {
929
- addRole(elems[i], role);
930
- }
931
- });
932
- if (context === document) {
933
- var header = document.getElementsByTagName('header')[0];
934
- var footers = document.getElementsByTagName('footer');
935
- var footerLen = footers.length;
936
- if (header && !$(header).closest('section, article')[0]) {
937
- addRole(header, 'banner');
938
- }
939
- if (!footerLen) {
940
- return;
941
- }
942
- var footer = footers[footerLen - 1];
943
- if (!$(footer).closest('section, article')[0]) {
944
- addRole(footer, 'contentinfo');
945
- }
912
+ //if we support basic styleing or do not support ARIA (assumed) abort
913
+ if(!Modernizr.localstorage || ('hidden' in document.createElement('a'))){return;}
914
+
915
+ var elemMappings = {
916
+ article: "article",
917
+ aside: "complementary",
918
+ section: "region",
919
+ nav: "navigation",
920
+ address: "contentinfo"
921
+ };
922
+ var addRole = function(elem, role){
923
+ var hasRole = elem.getAttribute('role');
924
+ if (!hasRole) {
925
+ elem.setAttribute('role', role);
926
+ }
927
+ };
928
+
929
+ $.webshims.addReady(function(context, contextElem){
930
+ $.each(elemMappings, function(name, role){
931
+ var elems = $(name, context).add(contextElem.filter(name));
932
+ for (var i = 0, len = elems.length; i < len; i++) {
933
+ addRole(elems[i], role);
946
934
  }
947
935
  });
948
- }
936
+ if (context === document) {
937
+ var header = document.getElementsByTagName('header')[0];
938
+ var footers = document.getElementsByTagName('footer');
939
+ var footerLen = footers.length;
940
+ if (header && !$(header).closest('section, article')[0]) {
941
+ addRole(header, 'banner');
942
+ }
943
+ if (!footerLen) {
944
+ return;
945
+ }
946
+ var footer = footers[footerLen - 1];
947
+ if (!$(footer).closest('section, article')[0]) {
948
+ addRole(footer, 'contentinfo');
949
+ }
950
+ }
951
+ });
952
+
949
953
  })(jQuery, document);
950
954
 
951
955
  jQuery.webshims.register('details', function($, webshims, window, doc, undefined, options){