webshims-rails 1.11.2 → 1.11.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +3 -4
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +20 -8
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +43 -2
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +63 -11
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +3 -5
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +43 -2
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/form-core.js +8 -4
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +3 -5
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +137 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +63 -11
- metadata +6 -6
@@ -375,15 +375,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
375
375
|
lastDuration: 0
|
376
376
|
}, getProps, getSetProps);
|
377
377
|
|
378
|
-
var idRep = /^jarisplayer-/;
|
379
|
-
var getSwfDataFromID = function(id){
|
380
|
-
|
381
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
382
|
-
if(!elem){return;}
|
383
|
-
var data = webshims.data(elem, 'mediaelement');
|
384
|
-
return data.isActive == 'third' ? data : null;
|
385
|
-
};
|
386
|
-
|
387
378
|
|
388
379
|
var getSwfDataFromElem = function(elem){
|
389
380
|
try {
|
@@ -976,6 +967,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
976
967
|
box = data.shadowElem;
|
977
968
|
resetSwfProps(data);
|
978
969
|
} else {
|
970
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
979
971
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
980
972
|
.css({
|
981
973
|
position: 'relative',
|
@@ -1058,8 +1050,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1058
1050
|
;
|
1059
1051
|
}
|
1060
1052
|
|
1061
|
-
|
1062
|
-
|
1053
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
1054
|
+
webshims.error('something went wrong');
|
1055
|
+
return;
|
1056
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
1057
|
+
|
1063
1058
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
1064
1059
|
|
1065
1060
|
if(jaris.type == 'ready'){
|
@@ -1265,6 +1260,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1265
1260
|
descs[fn] = {
|
1266
1261
|
value: function(){
|
1267
1262
|
var data = getSwfDataFromElem(this);
|
1263
|
+
|
1268
1264
|
if(data){
|
1269
1265
|
if(data.stopPlayPause){
|
1270
1266
|
clearTimeout(data.stopPlayPause);
|
@@ -1287,6 +1283,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1287
1283
|
|
1288
1284
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
1289
1285
|
var data = getSwfDataFromElem(this);
|
1286
|
+
|
1290
1287
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
1291
1288
|
|
1292
1289
|
if(data){
|
@@ -1420,6 +1417,61 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1420
1417
|
} else if(!('media' in document.createElement('source'))){
|
1421
1418
|
webshims.reflectProperties('source', ['media']);
|
1422
1419
|
}
|
1420
|
+
if(options.experimentallyMimetypeCheck){
|
1421
|
+
(function(){
|
1422
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
1423
|
+
var getMimeType = function(){
|
1424
|
+
var done;
|
1425
|
+
var unknown = 'media/unknown please provide mime type';
|
1426
|
+
var media = $(this);
|
1427
|
+
var xhrs = [];
|
1428
|
+
media
|
1429
|
+
.not('.ws-after-check')
|
1430
|
+
.find('source')
|
1431
|
+
[ADDBACK]()
|
1432
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
1433
|
+
.each(function(){
|
1434
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
1435
|
+
var error = function(){
|
1436
|
+
source.attr('data-type', unknown);
|
1437
|
+
};
|
1438
|
+
try {
|
1439
|
+
xhrs.push(
|
1440
|
+
$.ajax({
|
1441
|
+
type: 'head',
|
1442
|
+
url: $.attr(this, 'src'),
|
1443
|
+
success: function(content, status, xhr){
|
1444
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
1445
|
+
if(mime){
|
1446
|
+
done = true;
|
1447
|
+
}
|
1448
|
+
source.attr('data-type', mime || unknown);
|
1449
|
+
},
|
1450
|
+
error: error
|
1451
|
+
})
|
1452
|
+
)
|
1453
|
+
;
|
1454
|
+
} catch(er){
|
1455
|
+
error();
|
1456
|
+
}
|
1457
|
+
})
|
1458
|
+
;
|
1459
|
+
if(xhrs.length){
|
1460
|
+
media.addClass('ws-after-check');
|
1461
|
+
$.when.apply($, xhrs).always(function(){
|
1462
|
+
media.mediaLoad();
|
1463
|
+
setTimeout(function(){
|
1464
|
+
media.removeClass('ws-after-check');
|
1465
|
+
}, 9);
|
1466
|
+
});
|
1467
|
+
}
|
1468
|
+
};
|
1469
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
1470
|
+
$(document).on('mediaerror', function(e){
|
1471
|
+
getMimeType.call(e.target);
|
1472
|
+
});
|
1473
|
+
})();
|
1474
|
+
}
|
1423
1475
|
|
1424
1476
|
});
|
1425
1477
|
webshims.register('track', function($, webshims, window, document, undefined){
|
@@ -588,7 +588,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
588
588
|
src.server = tmp;
|
589
589
|
}
|
590
590
|
|
591
|
-
tmp = elem.attr('type');
|
591
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
592
592
|
if(tmp){
|
593
593
|
src.type = tmp;
|
594
594
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -612,6 +612,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
612
612
|
}
|
613
613
|
}
|
614
614
|
}
|
615
|
+
|
616
|
+
if(!src.container){
|
617
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
618
|
+
}
|
619
|
+
|
615
620
|
tmp = elem.attr('media');
|
616
621
|
if(tmp){
|
617
622
|
src.media = tmp;
|
@@ -845,15 +850,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
845
850
|
|
846
851
|
var handleThird = (function(){
|
847
852
|
var requested;
|
853
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
848
854
|
return function( mediaElem, ret, data ){
|
855
|
+
//readd to ready
|
849
856
|
|
850
|
-
|
851
|
-
|
857
|
+
|
858
|
+
webshims.ready(readyType, function(){
|
859
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
852
860
|
mediaelement.createSWF( mediaElem, ret, data );
|
853
861
|
} else if(!requested) {
|
854
862
|
requested = true;
|
855
863
|
loadThird();
|
856
|
-
|
864
|
+
|
857
865
|
handleThird( mediaElem, ret, data );
|
858
866
|
}
|
859
867
|
});
|
@@ -1322,6 +1322,7 @@ try {
|
|
1322
1322
|
}
|
1323
1323
|
|
1324
1324
|
(function(){
|
1325
|
+
if(options.noPlaceholderPolyfill){return;}
|
1325
1326
|
var bustedPlaceholder;
|
1326
1327
|
Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
|
1327
1328
|
if(Modernizr.input.placeholder && options.overridePlaceholder){
|
@@ -1504,7 +1505,6 @@ try {
|
|
1504
1505
|
create: function(elem){
|
1505
1506
|
var data = $.data(elem, 'placeHolder');
|
1506
1507
|
var form;
|
1507
|
-
var responsiveElem;
|
1508
1508
|
if(data){return data;}
|
1509
1509
|
data = $.data(elem, 'placeHolder', {});
|
1510
1510
|
|
@@ -1524,7 +1524,6 @@ try {
|
|
1524
1524
|
if(elem.type == 'password' || isOver){
|
1525
1525
|
data.text = createPlaceholder(elem);
|
1526
1526
|
if(isResponsive || $(elem).is('.responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
|
1527
|
-
responsiveElem = true;
|
1528
1527
|
data.box = data.text;
|
1529
1528
|
} else {
|
1530
1529
|
data.box = $(elem)
|
@@ -1764,7 +1763,6 @@ try {
|
|
1764
1763
|
|
1765
1764
|
//pro forma
|
1766
1765
|
,color: 1
|
1767
|
-
//,range: 1
|
1768
1766
|
},
|
1769
1767
|
observe = function(input){
|
1770
1768
|
var timer,
|
@@ -1786,7 +1784,7 @@ try {
|
|
1786
1784
|
extraTimer = setTimeout(trigger, 9);
|
1787
1785
|
},
|
1788
1786
|
unbind = function(){
|
1789
|
-
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput', trigger);
|
1787
|
+
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput triggerinput', trigger);
|
1790
1788
|
clearInterval(timer);
|
1791
1789
|
setTimeout(function(){
|
1792
1790
|
trigger();
|
@@ -1802,7 +1800,7 @@ try {
|
|
1802
1800
|
input.on({
|
1803
1801
|
'keyup keypress keydown paste cut': extraTest,
|
1804
1802
|
focusout: unbind,
|
1805
|
-
'input updateInput change': trigger
|
1803
|
+
'input updateInput change triggerinput': trigger
|
1806
1804
|
});
|
1807
1805
|
}
|
1808
1806
|
;
|
@@ -1258,6 +1258,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1258
1258
|
"use strict";
|
1259
1259
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
1260
1260
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
1261
|
+
var has = Object.prototype.hasOwnProperty;
|
1261
1262
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
1262
1263
|
|
1263
1264
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -1330,6 +1331,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1330
1331
|
//proxying attribute
|
1331
1332
|
var olds = {};
|
1332
1333
|
var havePolyfill = {};
|
1334
|
+
var hasPolyfillMethod = {};
|
1333
1335
|
var extendedProps = {};
|
1334
1336
|
var extendQ = {};
|
1335
1337
|
var modifyProps = {};
|
@@ -1435,6 +1437,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1435
1437
|
};
|
1436
1438
|
});
|
1437
1439
|
|
1440
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
1441
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
1442
|
+
(function(oldTrigger){
|
1443
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
1444
|
+
|
1445
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
1446
|
+
return oldTrigger.apply(this, arguments);
|
1447
|
+
}
|
1448
|
+
var ret, isOrig, origName;
|
1449
|
+
var origFn = elem[event];
|
1450
|
+
var polyfilledFn = $.prop(elem, event);
|
1451
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
1452
|
+
if(changeFn){
|
1453
|
+
origName = '__ws'+event;
|
1454
|
+
isOrig = (event in elem) && has.call(elem, event);
|
1455
|
+
elem[event] = polyfilledFn;
|
1456
|
+
elem[origName] = origFn;
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
ret = oldTrigger.apply(this, arguments);
|
1460
|
+
if (changeFn) {
|
1461
|
+
if(isOrig){
|
1462
|
+
elem[event] = origFn;
|
1463
|
+
} else {
|
1464
|
+
delete elem[event];
|
1465
|
+
}
|
1466
|
+
delete elem[origName];
|
1467
|
+
}
|
1468
|
+
|
1469
|
+
return ret;
|
1470
|
+
};
|
1471
|
+
})($.event.trigger);
|
1472
|
+
}
|
1438
1473
|
|
1439
1474
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
1440
1475
|
olds[type] = $[type];
|
@@ -1519,6 +1554,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1519
1554
|
}
|
1520
1555
|
var oldDesc = extendedProps[nodeName][prop][type];
|
1521
1556
|
var getSup = function(propType, descriptor, oDesc){
|
1557
|
+
var origProp;
|
1522
1558
|
if(descriptor && descriptor[propType]){
|
1523
1559
|
return descriptor[propType];
|
1524
1560
|
}
|
@@ -1535,8 +1571,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1535
1571
|
};
|
1536
1572
|
}
|
1537
1573
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
1574
|
+
origProp = '__ws'+prop;
|
1575
|
+
hasPolyfillMethod[prop] = true;
|
1538
1576
|
return function(value){
|
1539
|
-
var sup = olds[type](this, prop);
|
1577
|
+
var sup = this[origProp] || olds[type](this, prop);
|
1540
1578
|
if(sup && sup.apply){
|
1541
1579
|
sup = sup.apply(this, arguments);
|
1542
1580
|
}
|
@@ -1574,7 +1612,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1574
1612
|
|
1575
1613
|
var extendNativeValue = (function(){
|
1576
1614
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
1577
|
-
|
1615
|
+
|
1578
1616
|
//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
|
1579
1617
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
1580
1618
|
return function(nodeName, prop, desc){
|
@@ -2882,7 +2920,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2882
2920
|
src.server = tmp;
|
2883
2921
|
}
|
2884
2922
|
|
2885
|
-
tmp = elem.attr('type');
|
2923
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2886
2924
|
if(tmp){
|
2887
2925
|
src.type = tmp;
|
2888
2926
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2906,6 +2944,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2906
2944
|
}
|
2907
2945
|
}
|
2908
2946
|
}
|
2947
|
+
|
2948
|
+
if(!src.container){
|
2949
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2950
|
+
}
|
2951
|
+
|
2909
2952
|
tmp = elem.attr('media');
|
2910
2953
|
if(tmp){
|
2911
2954
|
src.media = tmp;
|
@@ -3139,15 +3182,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
3139
3182
|
|
3140
3183
|
var handleThird = (function(){
|
3141
3184
|
var requested;
|
3185
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
3142
3186
|
return function( mediaElem, ret, data ){
|
3187
|
+
//readd to ready
|
3188
|
+
|
3143
3189
|
|
3144
|
-
webshims.ready(
|
3145
|
-
if(mediaelement.createSWF){
|
3190
|
+
webshims.ready(readyType, function(){
|
3191
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
3146
3192
|
mediaelement.createSWF( mediaElem, ret, data );
|
3147
3193
|
} else if(!requested) {
|
3148
3194
|
requested = true;
|
3149
3195
|
loadThird();
|
3150
|
-
|
3196
|
+
|
3151
3197
|
handleThird( mediaElem, ret, data );
|
3152
3198
|
}
|
3153
3199
|
});
|
@@ -3488,15 +3534,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3488
3534
|
lastDuration: 0
|
3489
3535
|
}, getProps, getSetProps);
|
3490
3536
|
|
3491
|
-
var idRep = /^jarisplayer-/;
|
3492
|
-
var getSwfDataFromID = function(id){
|
3493
|
-
|
3494
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
3495
|
-
if(!elem){return;}
|
3496
|
-
var data = webshims.data(elem, 'mediaelement');
|
3497
|
-
return data.isActive == 'third' ? data : null;
|
3498
|
-
};
|
3499
|
-
|
3500
3537
|
|
3501
3538
|
var getSwfDataFromElem = function(elem){
|
3502
3539
|
try {
|
@@ -4089,6 +4126,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4089
4126
|
box = data.shadowElem;
|
4090
4127
|
resetSwfProps(data);
|
4091
4128
|
} else {
|
4129
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
4092
4130
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
4093
4131
|
.css({
|
4094
4132
|
position: 'relative',
|
@@ -4171,8 +4209,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4171
4209
|
;
|
4172
4210
|
}
|
4173
4211
|
|
4174
|
-
|
4175
|
-
|
4212
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
4213
|
+
webshims.error('something went wrong');
|
4214
|
+
return;
|
4215
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
4216
|
+
|
4176
4217
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
4177
4218
|
|
4178
4219
|
if(jaris.type == 'ready'){
|
@@ -4378,6 +4419,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4378
4419
|
descs[fn] = {
|
4379
4420
|
value: function(){
|
4380
4421
|
var data = getSwfDataFromElem(this);
|
4422
|
+
|
4381
4423
|
if(data){
|
4382
4424
|
if(data.stopPlayPause){
|
4383
4425
|
clearTimeout(data.stopPlayPause);
|
@@ -4400,6 +4442,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4400
4442
|
|
4401
4443
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
4402
4444
|
var data = getSwfDataFromElem(this);
|
4445
|
+
|
4403
4446
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
4404
4447
|
|
4405
4448
|
if(data){
|
@@ -4533,5 +4576,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4533
4576
|
} else if(!('media' in document.createElement('source'))){
|
4534
4577
|
webshims.reflectProperties('source', ['media']);
|
4535
4578
|
}
|
4579
|
+
if(options.experimentallyMimetypeCheck){
|
4580
|
+
(function(){
|
4581
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
4582
|
+
var getMimeType = function(){
|
4583
|
+
var done;
|
4584
|
+
var unknown = 'media/unknown please provide mime type';
|
4585
|
+
var media = $(this);
|
4586
|
+
var xhrs = [];
|
4587
|
+
media
|
4588
|
+
.not('.ws-after-check')
|
4589
|
+
.find('source')
|
4590
|
+
[ADDBACK]()
|
4591
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
4592
|
+
.each(function(){
|
4593
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
4594
|
+
var error = function(){
|
4595
|
+
source.attr('data-type', unknown);
|
4596
|
+
};
|
4597
|
+
try {
|
4598
|
+
xhrs.push(
|
4599
|
+
$.ajax({
|
4600
|
+
type: 'head',
|
4601
|
+
url: $.attr(this, 'src'),
|
4602
|
+
success: function(content, status, xhr){
|
4603
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
4604
|
+
if(mime){
|
4605
|
+
done = true;
|
4606
|
+
}
|
4607
|
+
source.attr('data-type', mime || unknown);
|
4608
|
+
},
|
4609
|
+
error: error
|
4610
|
+
})
|
4611
|
+
)
|
4612
|
+
;
|
4613
|
+
} catch(er){
|
4614
|
+
error();
|
4615
|
+
}
|
4616
|
+
})
|
4617
|
+
;
|
4618
|
+
if(xhrs.length){
|
4619
|
+
media.addClass('ws-after-check');
|
4620
|
+
$.when.apply($, xhrs).always(function(){
|
4621
|
+
media.mediaLoad();
|
4622
|
+
setTimeout(function(){
|
4623
|
+
media.removeClass('ws-after-check');
|
4624
|
+
}, 9);
|
4625
|
+
});
|
4626
|
+
}
|
4627
|
+
};
|
4628
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
4629
|
+
$(document).on('mediaerror', function(e){
|
4630
|
+
getMimeType.call(e.target);
|
4631
|
+
});
|
4632
|
+
})();
|
4633
|
+
}
|
4536
4634
|
|
4537
4635
|
});
|
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
3
3
|
"use strict";
|
4
4
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
5
5
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
6
|
+
var has = Object.prototype.hasOwnProperty;
|
6
7
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
8
|
|
8
9
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
75
76
|
//proxying attribute
|
76
77
|
var olds = {};
|
77
78
|
var havePolyfill = {};
|
79
|
+
var hasPolyfillMethod = {};
|
78
80
|
var extendedProps = {};
|
79
81
|
var extendQ = {};
|
80
82
|
var modifyProps = {};
|
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
180
182
|
};
|
181
183
|
});
|
182
184
|
|
185
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
186
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
187
|
+
(function(oldTrigger){
|
188
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
189
|
+
|
190
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
191
|
+
return oldTrigger.apply(this, arguments);
|
192
|
+
}
|
193
|
+
var ret, isOrig, origName;
|
194
|
+
var origFn = elem[event];
|
195
|
+
var polyfilledFn = $.prop(elem, event);
|
196
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
197
|
+
if(changeFn){
|
198
|
+
origName = '__ws'+event;
|
199
|
+
isOrig = (event in elem) && has.call(elem, event);
|
200
|
+
elem[event] = polyfilledFn;
|
201
|
+
elem[origName] = origFn;
|
202
|
+
}
|
203
|
+
|
204
|
+
ret = oldTrigger.apply(this, arguments);
|
205
|
+
if (changeFn) {
|
206
|
+
if(isOrig){
|
207
|
+
elem[event] = origFn;
|
208
|
+
} else {
|
209
|
+
delete elem[event];
|
210
|
+
}
|
211
|
+
delete elem[origName];
|
212
|
+
}
|
213
|
+
|
214
|
+
return ret;
|
215
|
+
};
|
216
|
+
})($.event.trigger);
|
217
|
+
}
|
183
218
|
|
184
219
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
185
220
|
olds[type] = $[type];
|
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
264
299
|
}
|
265
300
|
var oldDesc = extendedProps[nodeName][prop][type];
|
266
301
|
var getSup = function(propType, descriptor, oDesc){
|
302
|
+
var origProp;
|
267
303
|
if(descriptor && descriptor[propType]){
|
268
304
|
return descriptor[propType];
|
269
305
|
}
|
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
280
316
|
};
|
281
317
|
}
|
282
318
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
319
|
+
origProp = '__ws'+prop;
|
320
|
+
hasPolyfillMethod[prop] = true;
|
283
321
|
return function(value){
|
284
|
-
var sup = olds[type](this, prop);
|
322
|
+
var sup = this[origProp] || olds[type](this, prop);
|
285
323
|
if(sup && sup.apply){
|
286
324
|
sup = sup.apply(this, arguments);
|
287
325
|
}
|
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
319
357
|
|
320
358
|
var extendNativeValue = (function(){
|
321
359
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
322
|
-
|
360
|
+
|
323
361
|
//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
|
324
362
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
325
363
|
return function(nodeName, prop, desc){
|
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
3
3
|
"use strict";
|
4
4
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
5
5
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
6
|
+
var has = Object.prototype.hasOwnProperty;
|
6
7
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
8
|
|
8
9
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
75
76
|
//proxying attribute
|
76
77
|
var olds = {};
|
77
78
|
var havePolyfill = {};
|
79
|
+
var hasPolyfillMethod = {};
|
78
80
|
var extendedProps = {};
|
79
81
|
var extendQ = {};
|
80
82
|
var modifyProps = {};
|
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
180
182
|
};
|
181
183
|
});
|
182
184
|
|
185
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
186
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
187
|
+
(function(oldTrigger){
|
188
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
189
|
+
|
190
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
191
|
+
return oldTrigger.apply(this, arguments);
|
192
|
+
}
|
193
|
+
var ret, isOrig, origName;
|
194
|
+
var origFn = elem[event];
|
195
|
+
var polyfilledFn = $.prop(elem, event);
|
196
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
197
|
+
if(changeFn){
|
198
|
+
origName = '__ws'+event;
|
199
|
+
isOrig = (event in elem) && has.call(elem, event);
|
200
|
+
elem[event] = polyfilledFn;
|
201
|
+
elem[origName] = origFn;
|
202
|
+
}
|
203
|
+
|
204
|
+
ret = oldTrigger.apply(this, arguments);
|
205
|
+
if (changeFn) {
|
206
|
+
if(isOrig){
|
207
|
+
elem[event] = origFn;
|
208
|
+
} else {
|
209
|
+
delete elem[event];
|
210
|
+
}
|
211
|
+
delete elem[origName];
|
212
|
+
}
|
213
|
+
|
214
|
+
return ret;
|
215
|
+
};
|
216
|
+
})($.event.trigger);
|
217
|
+
}
|
183
218
|
|
184
219
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
185
220
|
olds[type] = $[type];
|
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
264
299
|
}
|
265
300
|
var oldDesc = extendedProps[nodeName][prop][type];
|
266
301
|
var getSup = function(propType, descriptor, oDesc){
|
302
|
+
var origProp;
|
267
303
|
if(descriptor && descriptor[propType]){
|
268
304
|
return descriptor[propType];
|
269
305
|
}
|
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
280
316
|
};
|
281
317
|
}
|
282
318
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
319
|
+
origProp = '__ws'+prop;
|
320
|
+
hasPolyfillMethod[prop] = true;
|
283
321
|
return function(value){
|
284
|
-
var sup = olds[type](this, prop);
|
322
|
+
var sup = this[origProp] || olds[type](this, prop);
|
285
323
|
if(sup && sup.apply){
|
286
324
|
sup = sup.apply(this, arguments);
|
287
325
|
}
|
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
319
357
|
|
320
358
|
var extendNativeValue = (function(){
|
321
359
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
322
|
-
|
360
|
+
|
323
361
|
//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
|
324
362
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
325
363
|
return function(nodeName, prop, desc){
|
@@ -1147,17 +1185,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1147
1185
|
/*
|
1148
1186
|
* Selectors for all browsers
|
1149
1187
|
*/
|
1188
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1150
1189
|
var hasInvalid = function(elem){
|
1151
1190
|
var ret = false;
|
1152
1191
|
$(elem).jProp('elements').each(function(){
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1192
|
+
if(!rElementsGroup.test(elem.nodeName || '')){
|
1193
|
+
ret = $(this).is(':invalid');
|
1194
|
+
if(ret){
|
1195
|
+
return false;
|
1196
|
+
}
|
1156
1197
|
}
|
1198
|
+
|
1157
1199
|
});
|
1158
1200
|
return ret;
|
1159
1201
|
};
|
1160
|
-
|
1202
|
+
|
1161
1203
|
$.extend($.expr[":"], {
|
1162
1204
|
"valid-element": function(elem){
|
1163
1205
|
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|