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
@@ -351,7 +351,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
351
351
  set: function(value){
352
352
  $(this).getShadowFocusElement().attr('aria-required', !!(value)+'');
353
353
  },
354
- initAttr: (!$.browser.msie || webshims.browserVersion > 7)//only if we have aria-support
354
+ initAttr: (Modernizr.localstorage)//only if we have aria-support
355
355
  });
356
356
 
357
357
  webshims.reflectProperties(['input'], ['pattern']);
@@ -666,14 +666,13 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
666
666
  }
667
667
  });
668
668
 
669
- if($.browser.webkit && Modernizr.inputtypes.date){
669
+ if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
670
670
  (function(){
671
671
 
672
672
  var noInputTriggerEvts = {updateInput: 1, input: 1},
673
673
  fixInputTypes = {
674
674
  date: 1,
675
- time: 1,
676
- "datetime-local": 1
675
+ time: 1
677
676
  },
678
677
  noFocusEvents = {
679
678
  focusout: 1,
@@ -1097,8 +1096,7 @@ try {
1097
1096
 
1098
1097
  (function(){
1099
1098
  Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
1100
- var bustedTextarea = $.browser.webkit && Modernizr.textareaPlaceholder && webshims.browserVersion < 535;
1101
- if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder && !bustedTextarea){return;}
1099
+ if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder){return;}
1102
1100
 
1103
1101
  var isOver = (webshims.cfg.forms.placeholderType == 'over');
1104
1102
  var isResponsive = (webshims.cfg.forms.responsivePlaceholder);
@@ -1300,8 +1298,8 @@ try {
1300
1298
  data.text.css('padding'+ side, size);
1301
1299
  });
1302
1300
 
1303
- $(elem)
1304
- .on('updateshadowdom', function(){
1301
+ $(document)
1302
+ .onTrigger('updateshadowdom', function(){
1305
1303
  var height, width;
1306
1304
  if((width = elem.offsetWidth) || (height = elem.offsetHeight)){
1307
1305
  data.text
@@ -1313,7 +1311,6 @@ try {
1313
1311
  ;
1314
1312
  }
1315
1313
  })
1316
- .triggerHandler('updateshadowdom')
1317
1314
  ;
1318
1315
 
1319
1316
  } else {
@@ -1369,17 +1366,11 @@ try {
1369
1366
  attr: {
1370
1367
  set: function(val){
1371
1368
  var elem = this;
1372
- if(bustedTextarea){
1373
- webshims.data(elem, 'textareaPlaceholder', val);
1374
- elem.placeholder = '';
1375
- } else {
1376
- webshims.contentAttr(elem, 'placeholder', val);
1377
- }
1369
+ webshims.contentAttr(elem, 'placeholder', val);
1378
1370
  pHolder.update(elem, val);
1379
1371
  },
1380
1372
  get: function(){
1381
- var ret = (bustedTextarea) ? webshims.data(this, 'textareaPlaceholder') : '';
1382
- return ret || webshims.contentAttr(this, 'placeholder');
1373
+ return webshims.contentAttr(this, 'placeholder');
1383
1374
  }
1384
1375
  },
1385
1376
  reflect: true,
@@ -1395,13 +1386,9 @@ try {
1395
1386
  placeholderValueDesc[propType] = {
1396
1387
  set: function(val){
1397
1388
  var elem = this;
1398
- var placeholder;
1399
- if(bustedTextarea){
1400
- placeholder = webshims.data(elem, 'textareaPlaceholder');
1401
- }
1402
- if(!placeholder){
1403
- placeholder = webshims.contentAttr(elem, 'placeholder');
1404
- }
1389
+ var placeholder = webshims.contentAttr(elem, 'placeholder');
1390
+
1391
+
1405
1392
  $.removeData(elem, 'cachedValidity');
1406
1393
  var ret = desc[propType]._supset.call(elem, val);
1407
1394
  if(placeholder && 'value' in elem){
@@ -1796,7 +1783,9 @@ jQuery.webshims.register('form-message', function($, webshims, window, document,
1796
1783
  if(hasSwf && !options.preferFlash && webshims.mediaelement.createSWF && !$(e.target).closest('audio, video').is('.nonnative-api-active')){
1797
1784
  options.preferFlash = true;
1798
1785
  document.removeEventListener('error', switchOptions, true);
1799
- $('audio, video').mediaLoad();
1786
+ $('audio, video').each(function(){
1787
+ webshims.mediaelement.selectSource(this);
1788
+ });
1800
1789
  webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src);
1801
1790
  } else if(!hasSwf){
1802
1791
  document.removeEventListener('error', switchOptions, true);
@@ -2200,7 +2189,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2200
2189
  data = data || webshims.data(elem, 'mediaelement');
2201
2190
  stepSources(elem, data, options.preferFlash || undefined, _srces);
2202
2191
  };
2203
-
2192
+ mediaelement.selectSource = selectSource;
2204
2193
 
2205
2194
  $(document).on('ended', function(e){
2206
2195
  var data = webshims.data(e.target, 'mediaelement');
@@ -2266,52 +2255,57 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2266
2255
  var media = $('video, audio', context)
2267
2256
  .add(insertedElement.filter('video, audio'))
2268
2257
  .each(function(){
2269
- if($.browser.msie && webshims.browserVersion > 8 && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])')){
2258
+ var data = webshims.data(this, 'mediaelement');
2259
+
2260
+ if(hasNative && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])') && (!data || data.isActive == 'html5')){
2261
+ //IE controls not visible bug
2270
2262
  $(this).prop('preload', 'metadata').mediaLoad();
2271
2263
  } else {
2272
- selectSource(this);
2264
+ selectSource(this, data);
2273
2265
  }
2274
2266
 
2275
-
2276
-
2277
2267
  if(hasNative){
2278
- var bufferTimer;
2279
- var lastBuffered;
2280
- var elem = this;
2281
- var getBufferedString = function(){
2282
- var buffered = $.prop(elem, 'buffered');
2283
- if(!buffered){return;}
2284
- var bufferString = "";
2285
- for(var i = 0, len = buffered.length; i < len;i++){
2286
- bufferString += buffered.end(i);
2287
- }
2288
- return bufferString;
2289
- };
2290
- var testBuffer = function(){
2291
- var buffered = getBufferedString();
2292
- if(buffered != lastBuffered){
2293
- lastBuffered = buffered;
2294
- $(elem).triggerHandler('progress');
2295
- }
2296
- };
2297
2268
 
2298
- $(this)
2299
- .on({
2300
- 'play loadstart progress': function(e){
2301
- if(e.type == 'progress'){
2302
- lastBuffered = getBufferedString();
2303
- }
2304
- clearTimeout(bufferTimer);
2305
- bufferTimer = setTimeout(testBuffer, 999);
2306
- },
2307
- 'emptied stalled mediaerror abort suspend': function(e){
2308
- if(e.type == 'emptied'){
2309
- lastBuffered = false;
2310
- }
2311
- clearTimeout(bufferTimer);
2269
+ //FF progress bug
2270
+ (function(){
2271
+ var bufferTimer;
2272
+ var lastBuffered;
2273
+ var elem = this;
2274
+ var getBufferedString = function(){
2275
+ var buffered = $.prop(elem, 'buffered');
2276
+ if(!buffered){return;}
2277
+ var bufferString = "";
2278
+ for(var i = 0, len = buffered.length; i < len;i++){
2279
+ bufferString += buffered.end(i);
2312
2280
  }
2313
- })
2314
- ;
2281
+ return bufferString;
2282
+ };
2283
+ var testBuffer = function(){
2284
+ var buffered = getBufferedString();
2285
+ if(buffered != lastBuffered){
2286
+ lastBuffered = buffered;
2287
+ $(elem).triggerHandler('progress');
2288
+ }
2289
+ };
2290
+
2291
+ $(this)
2292
+ .on({
2293
+ 'play loadstart progress': function(e){
2294
+ if(e.type == 'progress'){
2295
+ lastBuffered = getBufferedString();
2296
+ }
2297
+ clearTimeout(bufferTimer);
2298
+ bufferTimer = setTimeout(testBuffer, 999);
2299
+ },
2300
+ 'emptied stalled mediaerror abort suspend': function(e){
2301
+ if(e.type == 'emptied'){
2302
+ lastBuffered = false;
2303
+ }
2304
+ clearTimeout(bufferTimer);
2305
+ }
2306
+ })
2307
+ ;
2308
+ })();
2315
2309
  }
2316
2310
 
2317
2311
  })
@@ -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,52 +909,53 @@ 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
  //additional tests for partial implementation of forms features
952
956
  (function($){
953
957
  "use strict";
958
+ var isWebkit = /webkit/i.test(navigator.userAgent);
954
959
  var Modernizr = window.Modernizr;
955
960
  var webshims = $.webshims;
956
961
  var bugs = webshims.bugs;
@@ -993,80 +998,80 @@ jQuery.webshims.register('dom-extend', function($, webshims, window, document, u
993
998
 
994
999
  if(!Modernizr.formvalidation || bugs.bustedValidity){
995
1000
  testRequiredFind();
996
- return;
997
- }
998
-
999
- //create delegatable events
1000
- webshims.capturingEvents(['input']);
1001
- webshims.capturingEvents(['invalid'], true);
1002
-
1003
- if(window.opera || window.testGoodWithFix){
1004
-
1005
- form.appendTo('head');
1006
-
1007
- testRequiredFind();
1008
- bugs.validationMessage = !(inputElem.prop('validationMessage'));
1009
-
1010
- webshims.reTest(['form-native-extend', 'form-message']);
1001
+ } else {
1002
+ //create delegatable events
1003
+ webshims.capturingEvents(['input']);
1004
+ webshims.capturingEvents(['invalid'], true);
1011
1005
 
1012
- form.remove();
1006
+ if(window.opera || window.testGoodWithFix){
1013
1007
 
1014
- $(function(){
1015
- onDomextend(function(){
1016
-
1017
- //Opera shows native validation bubbles in case of input.checkValidity()
1018
- // Opera 11.6/12 hasn't fixed this issue right, it's buggy
1019
- var preventDefault = function(e){
1020
- e.preventDefault();
1021
- };
1008
+ form.appendTo('head');
1009
+
1010
+ testRequiredFind();
1011
+ bugs.validationMessage = !(inputElem.prop('validationMessage'));
1012
+
1013
+ webshims.reTest(['form-native-extend', 'form-message']);
1014
+
1015
+ form.remove();
1022
1016
 
1023
- ['form', 'input', 'textarea', 'select'].forEach(function(name){
1024
- var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
1025
- prop: {
1026
- value: function(){
1027
- if (!webshims.fromSubmit) {
1028
- $(this).on('invalid.checkvalidity', preventDefault);
1029
- }
1030
-
1031
- webshims.fromCheckValidity = true;
1032
- var ret = desc.prop._supvalue.apply(this, arguments);
1033
- if (!webshims.fromSubmit) {
1034
- $(this).unbind('invalid.checkvalidity', preventDefault);
1017
+ $(function(){
1018
+ onDomextend(function(){
1019
+
1020
+ //Opera shows native validation bubbles in case of input.checkValidity()
1021
+ // Opera 11.6/12 hasn't fixed this issue right, it's buggy
1022
+ var preventDefault = function(e){
1023
+ e.preventDefault();
1024
+ };
1025
+
1026
+ ['form', 'input', 'textarea', 'select'].forEach(function(name){
1027
+ var desc = webshims.defineNodeNameProperty(name, 'checkValidity', {
1028
+ prop: {
1029
+ value: function(){
1030
+ if (!webshims.fromSubmit) {
1031
+ $(this).on('invalid.checkvalidity', preventDefault);
1032
+ }
1033
+
1034
+ webshims.fromCheckValidity = true;
1035
+ var ret = desc.prop._supvalue.apply(this, arguments);
1036
+ if (!webshims.fromSubmit) {
1037
+ $(this).unbind('invalid.checkvalidity', preventDefault);
1038
+ }
1039
+ webshims.fromCheckValidity = false;
1040
+ return ret;
1035
1041
  }
1036
- webshims.fromCheckValidity = false;
1037
- return ret;
1038
1042
  }
1039
- }
1043
+ });
1040
1044
  });
1045
+
1041
1046
  });
1042
-
1043
1047
  });
1044
- });
1048
+ }
1049
+
1050
+ if(isWebkit && !webshims.bugs.bustedValidity){
1051
+ (function(){
1052
+ var elems = /^(?:textarea|input)$/i;
1053
+ var form = false;
1054
+
1055
+ document.addEventListener('contextmenu', function(e){
1056
+ if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
1057
+ setTimeout(function(){
1058
+ form = false;
1059
+ }, 1);
1060
+ }
1061
+ }, false);
1062
+
1063
+ $(window).on('invalid', function(e){
1064
+ if(e.originalEvent && form && form == e.target.form){
1065
+ e.wrongWebkitInvalid = true;
1066
+ e.stopImmediatePropagation();
1067
+ }
1068
+ });
1069
+
1070
+ })();
1071
+ }
1045
1072
  }
1046
1073
 
1047
- if($.browser.webkit && !webshims.bugs.bustedValidity){
1048
- (function(){
1049
- var elems = /^(?:textarea|input)$/i;
1050
- var form = false;
1051
-
1052
- document.addEventListener('contextmenu', function(e){
1053
- if(elems.test( e.target.nodeName || '') && (form = e.target.form)){
1054
- setTimeout(function(){
1055
- form = false;
1056
- }, 1);
1057
- }
1058
- }, false);
1059
-
1060
- $(window).on('invalid', function(e){
1061
- if(e.originalEvent && form && form == e.target.form){
1062
- e.wrongWebkitInvalid = true;
1063
- e.stopImmediatePropagation();
1064
- }
1065
- });
1066
-
1067
- })();
1068
- }
1069
- })(jQuery);
1074
+
1070
1075
 
1071
1076
  jQuery.webshims.register('form-core', function($, webshims, window, document, undefined, options){
1072
1077
  "use strict";
@@ -1181,7 +1186,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1181
1186
  return false;
1182
1187
  };
1183
1188
 
1184
- if(Modernizr.formvalidation && $.browser.webkit && !webshims.bugs.bustedValidity && webshims.browserVersion < 27){
1189
+ if(Modernizr.formvalidation && isWebkit && !webshims.bugs.bustedValidity){
1185
1190
  (function(){
1186
1191
  var retriggerRadioValidity = function(){
1187
1192
  var validity;
@@ -1360,7 +1365,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1360
1365
 
1361
1366
 
1362
1367
  var setRoot = function(){
1363
- webshims.scrollRoot = ($.browser.webkit || document.compatMode == 'BackCompat') ?
1368
+ webshims.scrollRoot = (isWebkit || document.compatMode == 'BackCompat') ?
1364
1369
  $(document.body) :
1365
1370
  $(document.documentElement)
1366
1371
  ;
@@ -1382,7 +1387,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1382
1387
 
1383
1388
  /* some extra validation UI */
1384
1389
  webshims.validityAlert = (function(){
1385
- var alertElem = (!$.browser.msie || parseInt($.browser.version, 10) > 7) ? 'span' : 'label';
1390
+ var alertElem = 'span';
1386
1391
  var errorBubble;
1387
1392
  var hideTimer = false;
1388
1393
  var focusTimer = false;
@@ -1497,7 +1502,7 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1497
1502
  errorBubble = api.errorBubble = $('<'+alertElem+' class="validity-alert-wrapper" role="alert"><span class="validity-alert"><span class="va-arrow"><span class="va-arrow-box"></span></span><span class="va-box"></span></span></'+alertElem+'>').css({position: 'absolute', display: 'none'});
1498
1503
  webshims.ready('DOM', function(){
1499
1504
  errorBubble.appendTo('body');
1500
- if($.fn.bgIframe && $.browser.msie && parseInt($.browser.version, 10) < 7){
1505
+ if($.fn.bgIframe){
1501
1506
  errorBubble.bgIframe();
1502
1507
  }
1503
1508
  });
@@ -1577,8 +1582,9 @@ jQuery.webshims.register('form-core', function($, webshims, window, document, un
1577
1582
  });
1578
1583
  });
1579
1584
  }
1580
-
1581
1585
  });
1586
+
1587
+ })(jQuery);
1582
1588
  jQuery.webshims.register('form-datalist', function($, webshims, window, document, undefined){
1583
1589
  "use strict";
1584
1590
  var doc = document;
@@ -1797,7 +1803,6 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
1797
1803
  range: 1,
1798
1804
  date: 1
1799
1805
  };
1800
- var lteie6 = ($.browser.msie && parseInt($.browser.version, 10) < 7);
1801
1806
  var globStoredOptions = {};
1802
1807
  var getStoredOptions = function(name){
1803
1808
  if(!name){return [];}
@@ -2081,7 +2086,7 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
2081
2086
  this.arrayOptions = allOptions;
2082
2087
  this.shadowList.html('<div class="datalist-outer-box"><div class="datalist-box"><ul role="list">'+ list.join("\n") +'</ul></div></div>');
2083
2088
 
2084
- if($.fn.bgIframe && lteie6){
2089
+ if($.fn.bgIframe){
2085
2090
  this.shadowList.bgIframe();
2086
2091
  }
2087
2092
 
@@ -2313,7 +2318,9 @@ jQuery.webshims.register('form-datalist', function($, webshims, window, document
2313
2318
  if(hasSwf && !options.preferFlash && webshims.mediaelement.createSWF && !$(e.target).closest('audio, video').is('.nonnative-api-active')){
2314
2319
  options.preferFlash = true;
2315
2320
  document.removeEventListener('error', switchOptions, true);
2316
- $('audio, video').mediaLoad();
2321
+ $('audio, video').each(function(){
2322
+ webshims.mediaelement.selectSource(this);
2323
+ });
2317
2324
  webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src);
2318
2325
  } else if(!hasSwf){
2319
2326
  document.removeEventListener('error', switchOptions, true);
@@ -2717,7 +2724,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2717
2724
  data = data || webshims.data(elem, 'mediaelement');
2718
2725
  stepSources(elem, data, options.preferFlash || undefined, _srces);
2719
2726
  };
2720
-
2727
+ mediaelement.selectSource = selectSource;
2721
2728
 
2722
2729
  $(document).on('ended', function(e){
2723
2730
  var data = webshims.data(e.target, 'mediaelement');
@@ -2783,52 +2790,57 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2783
2790
  var media = $('video, audio', context)
2784
2791
  .add(insertedElement.filter('video, audio'))
2785
2792
  .each(function(){
2786
- if($.browser.msie && webshims.browserVersion > 8 && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])')){
2793
+ var data = webshims.data(this, 'mediaelement');
2794
+
2795
+ if(hasNative && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])') && (!data || data.isActive == 'html5')){
2796
+ //IE controls not visible bug
2787
2797
  $(this).prop('preload', 'metadata').mediaLoad();
2788
2798
  } else {
2789
- selectSource(this);
2799
+ selectSource(this, data);
2790
2800
  }
2791
2801
 
2792
-
2793
-
2794
2802
  if(hasNative){
2795
- var bufferTimer;
2796
- var lastBuffered;
2797
- var elem = this;
2798
- var getBufferedString = function(){
2799
- var buffered = $.prop(elem, 'buffered');
2800
- if(!buffered){return;}
2801
- var bufferString = "";
2802
- for(var i = 0, len = buffered.length; i < len;i++){
2803
- bufferString += buffered.end(i);
2804
- }
2805
- return bufferString;
2806
- };
2807
- var testBuffer = function(){
2808
- var buffered = getBufferedString();
2809
- if(buffered != lastBuffered){
2810
- lastBuffered = buffered;
2811
- $(elem).triggerHandler('progress');
2812
- }
2813
- };
2814
2803
 
2815
- $(this)
2816
- .on({
2817
- 'play loadstart progress': function(e){
2818
- if(e.type == 'progress'){
2819
- lastBuffered = getBufferedString();
2820
- }
2821
- clearTimeout(bufferTimer);
2822
- bufferTimer = setTimeout(testBuffer, 999);
2823
- },
2824
- 'emptied stalled mediaerror abort suspend': function(e){
2825
- if(e.type == 'emptied'){
2826
- lastBuffered = false;
2827
- }
2828
- clearTimeout(bufferTimer);
2804
+ //FF progress bug
2805
+ (function(){
2806
+ var bufferTimer;
2807
+ var lastBuffered;
2808
+ var elem = this;
2809
+ var getBufferedString = function(){
2810
+ var buffered = $.prop(elem, 'buffered');
2811
+ if(!buffered){return;}
2812
+ var bufferString = "";
2813
+ for(var i = 0, len = buffered.length; i < len;i++){
2814
+ bufferString += buffered.end(i);
2829
2815
  }
2830
- })
2831
- ;
2816
+ return bufferString;
2817
+ };
2818
+ var testBuffer = function(){
2819
+ var buffered = getBufferedString();
2820
+ if(buffered != lastBuffered){
2821
+ lastBuffered = buffered;
2822
+ $(elem).triggerHandler('progress');
2823
+ }
2824
+ };
2825
+
2826
+ $(this)
2827
+ .on({
2828
+ 'play loadstart progress': function(e){
2829
+ if(e.type == 'progress'){
2830
+ lastBuffered = getBufferedString();
2831
+ }
2832
+ clearTimeout(bufferTimer);
2833
+ bufferTimer = setTimeout(testBuffer, 999);
2834
+ },
2835
+ 'emptied stalled mediaerror abort suspend': function(e){
2836
+ if(e.type == 'emptied'){
2837
+ lastBuffered = false;
2838
+ }
2839
+ clearTimeout(bufferTimer);
2840
+ }
2841
+ })
2842
+ ;
2843
+ })();
2832
2844
  }
2833
2845
 
2834
2846
  })