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
@@ -1412,6 +1412,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1412
1412
|
if(!langCfg['datetime-local']){
|
1413
1413
|
langCfg['datetime-local'] = {};
|
1414
1414
|
}
|
1415
|
+
if(!langCfg.time){
|
1416
|
+
langCfg.time = {};
|
1417
|
+
}
|
1415
1418
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
1416
1419
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
1417
1420
|
}
|
@@ -2215,6 +2215,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2215
2215
|
if(!langCfg['datetime-local']){
|
2216
2216
|
langCfg['datetime-local'] = {};
|
2217
2217
|
}
|
2218
|
+
if(!langCfg.time){
|
2219
|
+
langCfg.time = {};
|
2220
|
+
}
|
2218
2221
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
2219
2222
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
2220
2223
|
}
|
@@ -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){
|
@@ -2492,7 +2530,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2492
2530
|
src.server = tmp;
|
2493
2531
|
}
|
2494
2532
|
|
2495
|
-
tmp = elem.attr('type');
|
2533
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2496
2534
|
if(tmp){
|
2497
2535
|
src.type = tmp;
|
2498
2536
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2516,6 +2554,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2516
2554
|
}
|
2517
2555
|
}
|
2518
2556
|
}
|
2557
|
+
|
2558
|
+
if(!src.container){
|
2559
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2560
|
+
}
|
2561
|
+
|
2519
2562
|
tmp = elem.attr('media');
|
2520
2563
|
if(tmp){
|
2521
2564
|
src.media = tmp;
|
@@ -2749,15 +2792,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2749
2792
|
|
2750
2793
|
var handleThird = (function(){
|
2751
2794
|
var requested;
|
2795
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2752
2796
|
return function( mediaElem, ret, data ){
|
2797
|
+
//readd to ready
|
2753
2798
|
|
2754
|
-
|
2755
|
-
|
2799
|
+
|
2800
|
+
webshims.ready(readyType, function(){
|
2801
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2756
2802
|
mediaelement.createSWF( mediaElem, ret, data );
|
2757
2803
|
} else if(!requested) {
|
2758
2804
|
requested = true;
|
2759
2805
|
loadThird();
|
2760
|
-
|
2806
|
+
|
2761
2807
|
handleThird( mediaElem, ret, data );
|
2762
2808
|
}
|
2763
2809
|
});
|
@@ -3098,15 +3144,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3098
3144
|
lastDuration: 0
|
3099
3145
|
}, getProps, getSetProps);
|
3100
3146
|
|
3101
|
-
var idRep = /^jarisplayer-/;
|
3102
|
-
var getSwfDataFromID = function(id){
|
3103
|
-
|
3104
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
3105
|
-
if(!elem){return;}
|
3106
|
-
var data = webshims.data(elem, 'mediaelement');
|
3107
|
-
return data.isActive == 'third' ? data : null;
|
3108
|
-
};
|
3109
|
-
|
3110
3147
|
|
3111
3148
|
var getSwfDataFromElem = function(elem){
|
3112
3149
|
try {
|
@@ -3699,6 +3736,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3699
3736
|
box = data.shadowElem;
|
3700
3737
|
resetSwfProps(data);
|
3701
3738
|
} else {
|
3739
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
3702
3740
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
3703
3741
|
.css({
|
3704
3742
|
position: 'relative',
|
@@ -3781,8 +3819,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3781
3819
|
;
|
3782
3820
|
}
|
3783
3821
|
|
3784
|
-
|
3785
|
-
|
3822
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
3823
|
+
webshims.error('something went wrong');
|
3824
|
+
return;
|
3825
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
3826
|
+
|
3786
3827
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
3787
3828
|
|
3788
3829
|
if(jaris.type == 'ready'){
|
@@ -3988,6 +4029,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3988
4029
|
descs[fn] = {
|
3989
4030
|
value: function(){
|
3990
4031
|
var data = getSwfDataFromElem(this);
|
4032
|
+
|
3991
4033
|
if(data){
|
3992
4034
|
if(data.stopPlayPause){
|
3993
4035
|
clearTimeout(data.stopPlayPause);
|
@@ -4010,6 +4052,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4010
4052
|
|
4011
4053
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
4012
4054
|
var data = getSwfDataFromElem(this);
|
4055
|
+
|
4013
4056
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
4014
4057
|
|
4015
4058
|
if(data){
|
@@ -4143,5 +4186,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4143
4186
|
} else if(!('media' in document.createElement('source'))){
|
4144
4187
|
webshims.reflectProperties('source', ['media']);
|
4145
4188
|
}
|
4189
|
+
if(options.experimentallyMimetypeCheck){
|
4190
|
+
(function(){
|
4191
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
4192
|
+
var getMimeType = function(){
|
4193
|
+
var done;
|
4194
|
+
var unknown = 'media/unknown please provide mime type';
|
4195
|
+
var media = $(this);
|
4196
|
+
var xhrs = [];
|
4197
|
+
media
|
4198
|
+
.not('.ws-after-check')
|
4199
|
+
.find('source')
|
4200
|
+
[ADDBACK]()
|
4201
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
4202
|
+
.each(function(){
|
4203
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
4204
|
+
var error = function(){
|
4205
|
+
source.attr('data-type', unknown);
|
4206
|
+
};
|
4207
|
+
try {
|
4208
|
+
xhrs.push(
|
4209
|
+
$.ajax({
|
4210
|
+
type: 'head',
|
4211
|
+
url: $.attr(this, 'src'),
|
4212
|
+
success: function(content, status, xhr){
|
4213
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
4214
|
+
if(mime){
|
4215
|
+
done = true;
|
4216
|
+
}
|
4217
|
+
source.attr('data-type', mime || unknown);
|
4218
|
+
},
|
4219
|
+
error: error
|
4220
|
+
})
|
4221
|
+
)
|
4222
|
+
;
|
4223
|
+
} catch(er){
|
4224
|
+
error();
|
4225
|
+
}
|
4226
|
+
})
|
4227
|
+
;
|
4228
|
+
if(xhrs.length){
|
4229
|
+
media.addClass('ws-after-check');
|
4230
|
+
$.when.apply($, xhrs).always(function(){
|
4231
|
+
media.mediaLoad();
|
4232
|
+
setTimeout(function(){
|
4233
|
+
media.removeClass('ws-after-check');
|
4234
|
+
}, 9);
|
4235
|
+
});
|
4236
|
+
}
|
4237
|
+
};
|
4238
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
4239
|
+
$(document).on('mediaerror', function(e){
|
4240
|
+
getMimeType.call(e.target);
|
4241
|
+
});
|
4242
|
+
})();
|
4243
|
+
}
|
4146
4244
|
|
4147
4245
|
});
|
@@ -455,6 +455,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
455
455
|
"use strict";
|
456
456
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
457
457
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
458
|
+
var has = Object.prototype.hasOwnProperty;
|
458
459
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
459
460
|
|
460
461
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -527,6 +528,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
527
528
|
//proxying attribute
|
528
529
|
var olds = {};
|
529
530
|
var havePolyfill = {};
|
531
|
+
var hasPolyfillMethod = {};
|
530
532
|
var extendedProps = {};
|
531
533
|
var extendQ = {};
|
532
534
|
var modifyProps = {};
|
@@ -632,6 +634,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
632
634
|
};
|
633
635
|
});
|
634
636
|
|
637
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
638
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
639
|
+
(function(oldTrigger){
|
640
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
641
|
+
|
642
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
643
|
+
return oldTrigger.apply(this, arguments);
|
644
|
+
}
|
645
|
+
var ret, isOrig, origName;
|
646
|
+
var origFn = elem[event];
|
647
|
+
var polyfilledFn = $.prop(elem, event);
|
648
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
649
|
+
if(changeFn){
|
650
|
+
origName = '__ws'+event;
|
651
|
+
isOrig = (event in elem) && has.call(elem, event);
|
652
|
+
elem[event] = polyfilledFn;
|
653
|
+
elem[origName] = origFn;
|
654
|
+
}
|
655
|
+
|
656
|
+
ret = oldTrigger.apply(this, arguments);
|
657
|
+
if (changeFn) {
|
658
|
+
if(isOrig){
|
659
|
+
elem[event] = origFn;
|
660
|
+
} else {
|
661
|
+
delete elem[event];
|
662
|
+
}
|
663
|
+
delete elem[origName];
|
664
|
+
}
|
665
|
+
|
666
|
+
return ret;
|
667
|
+
};
|
668
|
+
})($.event.trigger);
|
669
|
+
}
|
635
670
|
|
636
671
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
637
672
|
olds[type] = $[type];
|
@@ -716,6 +751,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
716
751
|
}
|
717
752
|
var oldDesc = extendedProps[nodeName][prop][type];
|
718
753
|
var getSup = function(propType, descriptor, oDesc){
|
754
|
+
var origProp;
|
719
755
|
if(descriptor && descriptor[propType]){
|
720
756
|
return descriptor[propType];
|
721
757
|
}
|
@@ -732,8 +768,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
732
768
|
};
|
733
769
|
}
|
734
770
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
771
|
+
origProp = '__ws'+prop;
|
772
|
+
hasPolyfillMethod[prop] = true;
|
735
773
|
return function(value){
|
736
|
-
var sup = olds[type](this, prop);
|
774
|
+
var sup = this[origProp] || olds[type](this, prop);
|
737
775
|
if(sup && sup.apply){
|
738
776
|
sup = sup.apply(this, arguments);
|
739
777
|
}
|
@@ -771,7 +809,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
771
809
|
|
772
810
|
var extendNativeValue = (function(){
|
773
811
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
774
|
-
|
812
|
+
|
775
813
|
//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
|
776
814
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
777
815
|
return function(nodeName, prop, desc){
|
@@ -1599,17 +1637,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1599
1637
|
/*
|
1600
1638
|
* Selectors for all browsers
|
1601
1639
|
*/
|
1640
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1602
1641
|
var hasInvalid = function(elem){
|
1603
1642
|
var ret = false;
|
1604
1643
|
$(elem).jProp('elements').each(function(){
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1644
|
+
if(!rElementsGroup.test(elem.nodeName || '')){
|
1645
|
+
ret = $(this).is(':invalid');
|
1646
|
+
if(ret){
|
1647
|
+
return false;
|
1648
|
+
}
|
1608
1649
|
}
|
1650
|
+
|
1609
1651
|
});
|
1610
1652
|
return ret;
|
1611
1653
|
};
|
1612
|
-
|
1654
|
+
|
1613
1655
|
$.extend($.expr[":"], {
|
1614
1656
|
"valid-element": function(elem){
|
1615
1657
|
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|
@@ -2192,7 +2234,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2192
2234
|
src.server = tmp;
|
2193
2235
|
}
|
2194
2236
|
|
2195
|
-
tmp = elem.attr('type');
|
2237
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2196
2238
|
if(tmp){
|
2197
2239
|
src.type = tmp;
|
2198
2240
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2216,6 +2258,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2216
2258
|
}
|
2217
2259
|
}
|
2218
2260
|
}
|
2261
|
+
|
2262
|
+
if(!src.container){
|
2263
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2264
|
+
}
|
2265
|
+
|
2219
2266
|
tmp = elem.attr('media');
|
2220
2267
|
if(tmp){
|
2221
2268
|
src.media = tmp;
|
@@ -2449,15 +2496,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2449
2496
|
|
2450
2497
|
var handleThird = (function(){
|
2451
2498
|
var requested;
|
2499
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2452
2500
|
return function( mediaElem, ret, data ){
|
2501
|
+
//readd to ready
|
2453
2502
|
|
2454
|
-
|
2455
|
-
|
2503
|
+
|
2504
|
+
webshims.ready(readyType, function(){
|
2505
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2456
2506
|
mediaelement.createSWF( mediaElem, ret, data );
|
2457
2507
|
} else if(!requested) {
|
2458
2508
|
requested = true;
|
2459
2509
|
loadThird();
|
2460
|
-
|
2510
|
+
|
2461
2511
|
handleThird( mediaElem, ret, data );
|
2462
2512
|
}
|
2463
2513
|
});
|
@@ -806,6 +806,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
806
806
|
"use strict";
|
807
807
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
808
808
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
809
|
+
var has = Object.prototype.hasOwnProperty;
|
809
810
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
810
811
|
|
811
812
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -878,6 +879,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
878
879
|
//proxying attribute
|
879
880
|
var olds = {};
|
880
881
|
var havePolyfill = {};
|
882
|
+
var hasPolyfillMethod = {};
|
881
883
|
var extendedProps = {};
|
882
884
|
var extendQ = {};
|
883
885
|
var modifyProps = {};
|
@@ -983,6 +985,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
983
985
|
};
|
984
986
|
});
|
985
987
|
|
988
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
989
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
990
|
+
(function(oldTrigger){
|
991
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
992
|
+
|
993
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
994
|
+
return oldTrigger.apply(this, arguments);
|
995
|
+
}
|
996
|
+
var ret, isOrig, origName;
|
997
|
+
var origFn = elem[event];
|
998
|
+
var polyfilledFn = $.prop(elem, event);
|
999
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
1000
|
+
if(changeFn){
|
1001
|
+
origName = '__ws'+event;
|
1002
|
+
isOrig = (event in elem) && has.call(elem, event);
|
1003
|
+
elem[event] = polyfilledFn;
|
1004
|
+
elem[origName] = origFn;
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
ret = oldTrigger.apply(this, arguments);
|
1008
|
+
if (changeFn) {
|
1009
|
+
if(isOrig){
|
1010
|
+
elem[event] = origFn;
|
1011
|
+
} else {
|
1012
|
+
delete elem[event];
|
1013
|
+
}
|
1014
|
+
delete elem[origName];
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
return ret;
|
1018
|
+
};
|
1019
|
+
})($.event.trigger);
|
1020
|
+
}
|
986
1021
|
|
987
1022
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
988
1023
|
olds[type] = $[type];
|
@@ -1067,6 +1102,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1067
1102
|
}
|
1068
1103
|
var oldDesc = extendedProps[nodeName][prop][type];
|
1069
1104
|
var getSup = function(propType, descriptor, oDesc){
|
1105
|
+
var origProp;
|
1070
1106
|
if(descriptor && descriptor[propType]){
|
1071
1107
|
return descriptor[propType];
|
1072
1108
|
}
|
@@ -1083,8 +1119,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1083
1119
|
};
|
1084
1120
|
}
|
1085
1121
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
1122
|
+
origProp = '__ws'+prop;
|
1123
|
+
hasPolyfillMethod[prop] = true;
|
1086
1124
|
return function(value){
|
1087
|
-
var sup = olds[type](this, prop);
|
1125
|
+
var sup = this[origProp] || olds[type](this, prop);
|
1088
1126
|
if(sup && sup.apply){
|
1089
1127
|
sup = sup.apply(this, arguments);
|
1090
1128
|
}
|
@@ -1122,7 +1160,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1122
1160
|
|
1123
1161
|
var extendNativeValue = (function(){
|
1124
1162
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
1125
|
-
|
1163
|
+
|
1126
1164
|
//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
|
1127
1165
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
1128
1166
|
return function(nodeName, prop, desc){
|
@@ -2040,7 +2078,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2040
2078
|
src.server = tmp;
|
2041
2079
|
}
|
2042
2080
|
|
2043
|
-
tmp = elem.attr('type');
|
2081
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2044
2082
|
if(tmp){
|
2045
2083
|
src.type = tmp;
|
2046
2084
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2064,6 +2102,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2064
2102
|
}
|
2065
2103
|
}
|
2066
2104
|
}
|
2105
|
+
|
2106
|
+
if(!src.container){
|
2107
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2108
|
+
}
|
2109
|
+
|
2067
2110
|
tmp = elem.attr('media');
|
2068
2111
|
if(tmp){
|
2069
2112
|
src.media = tmp;
|
@@ -2297,15 +2340,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2297
2340
|
|
2298
2341
|
var handleThird = (function(){
|
2299
2342
|
var requested;
|
2343
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2300
2344
|
return function( mediaElem, ret, data ){
|
2345
|
+
//readd to ready
|
2346
|
+
|
2301
2347
|
|
2302
|
-
webshims.ready(
|
2303
|
-
if(mediaelement.createSWF){
|
2348
|
+
webshims.ready(readyType, function(){
|
2349
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2304
2350
|
mediaelement.createSWF( mediaElem, ret, data );
|
2305
2351
|
} else if(!requested) {
|
2306
2352
|
requested = true;
|
2307
2353
|
loadThird();
|
2308
|
-
|
2354
|
+
|
2309
2355
|
handleThird( mediaElem, ret, data );
|
2310
2356
|
}
|
2311
2357
|
});
|
@@ -2646,15 +2692,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
2646
2692
|
lastDuration: 0
|
2647
2693
|
}, getProps, getSetProps);
|
2648
2694
|
|
2649
|
-
var idRep = /^jarisplayer-/;
|
2650
|
-
var getSwfDataFromID = function(id){
|
2651
|
-
|
2652
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
2653
|
-
if(!elem){return;}
|
2654
|
-
var data = webshims.data(elem, 'mediaelement');
|
2655
|
-
return data.isActive == 'third' ? data : null;
|
2656
|
-
};
|
2657
|
-
|
2658
2695
|
|
2659
2696
|
var getSwfDataFromElem = function(elem){
|
2660
2697
|
try {
|
@@ -3247,6 +3284,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3247
3284
|
box = data.shadowElem;
|
3248
3285
|
resetSwfProps(data);
|
3249
3286
|
} else {
|
3287
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
3250
3288
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
3251
3289
|
.css({
|
3252
3290
|
position: 'relative',
|
@@ -3329,8 +3367,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3329
3367
|
;
|
3330
3368
|
}
|
3331
3369
|
|
3332
|
-
|
3333
|
-
|
3370
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
3371
|
+
webshims.error('something went wrong');
|
3372
|
+
return;
|
3373
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
3374
|
+
|
3334
3375
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
3335
3376
|
|
3336
3377
|
if(jaris.type == 'ready'){
|
@@ -3536,6 +3577,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3536
3577
|
descs[fn] = {
|
3537
3578
|
value: function(){
|
3538
3579
|
var data = getSwfDataFromElem(this);
|
3580
|
+
|
3539
3581
|
if(data){
|
3540
3582
|
if(data.stopPlayPause){
|
3541
3583
|
clearTimeout(data.stopPlayPause);
|
@@ -3558,6 +3600,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3558
3600
|
|
3559
3601
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
3560
3602
|
var data = getSwfDataFromElem(this);
|
3603
|
+
|
3561
3604
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
3562
3605
|
|
3563
3606
|
if(data){
|
@@ -3691,5 +3734,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3691
3734
|
} else if(!('media' in document.createElement('source'))){
|
3692
3735
|
webshims.reflectProperties('source', ['media']);
|
3693
3736
|
}
|
3737
|
+
if(options.experimentallyMimetypeCheck){
|
3738
|
+
(function(){
|
3739
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
3740
|
+
var getMimeType = function(){
|
3741
|
+
var done;
|
3742
|
+
var unknown = 'media/unknown please provide mime type';
|
3743
|
+
var media = $(this);
|
3744
|
+
var xhrs = [];
|
3745
|
+
media
|
3746
|
+
.not('.ws-after-check')
|
3747
|
+
.find('source')
|
3748
|
+
[ADDBACK]()
|
3749
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
3750
|
+
.each(function(){
|
3751
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
3752
|
+
var error = function(){
|
3753
|
+
source.attr('data-type', unknown);
|
3754
|
+
};
|
3755
|
+
try {
|
3756
|
+
xhrs.push(
|
3757
|
+
$.ajax({
|
3758
|
+
type: 'head',
|
3759
|
+
url: $.attr(this, 'src'),
|
3760
|
+
success: function(content, status, xhr){
|
3761
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
3762
|
+
if(mime){
|
3763
|
+
done = true;
|
3764
|
+
}
|
3765
|
+
source.attr('data-type', mime || unknown);
|
3766
|
+
},
|
3767
|
+
error: error
|
3768
|
+
})
|
3769
|
+
)
|
3770
|
+
;
|
3771
|
+
} catch(er){
|
3772
|
+
error();
|
3773
|
+
}
|
3774
|
+
})
|
3775
|
+
;
|
3776
|
+
if(xhrs.length){
|
3777
|
+
media.addClass('ws-after-check');
|
3778
|
+
$.when.apply($, xhrs).always(function(){
|
3779
|
+
media.mediaLoad();
|
3780
|
+
setTimeout(function(){
|
3781
|
+
media.removeClass('ws-after-check');
|
3782
|
+
}, 9);
|
3783
|
+
});
|
3784
|
+
}
|
3785
|
+
};
|
3786
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
3787
|
+
$(document).on('mediaerror', function(e){
|
3788
|
+
getMimeType.call(e.target);
|
3789
|
+
});
|
3790
|
+
})();
|
3791
|
+
}
|
3694
3792
|
|
3695
3793
|
});
|