mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-05-17 23:21:04 +00:00
77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
/*!
|
|
{
|
|
"name": "Data URI",
|
|
"property": "datauri",
|
|
"caniuse": "datauri",
|
|
"tags": ["url"],
|
|
"builderAliases": ["url_data_uri"],
|
|
"async": true,
|
|
"notes": [{
|
|
"name": "Wikipedia article",
|
|
"href": "https://en.wikipedia.org/wiki/Data_URI_scheme"
|
|
}],
|
|
"warnings": ["Support in Internet Explorer 8 is limited to images and linked resources like CSS files, not HTML files"]
|
|
}
|
|
!*/
|
|
/* DOC
|
|
Detects support for data URIs. Provides a subproperty to report support for data URIs over 32kb in size:
|
|
|
|
```javascript
|
|
Modernizr.datauri // true
|
|
Modernizr.datauri.over32kb // false in IE8
|
|
```
|
|
*/
|
|
define(['Modernizr'], function(Modernizr) {
|
|
// https://github.com/Modernizr/Modernizr/issues/14
|
|
Modernizr.addAsyncTest(function() {
|
|
|
|
// IE7 throw a mixed content warning on HTTPS for this test, so we'll
|
|
// just reject it (we know it doesn't support data URIs anyway)
|
|
// https://github.com/Modernizr/Modernizr/issues/362
|
|
if (navigator.userAgent.indexOf('MSIE 7.') !== -1) {
|
|
// Keep the test async
|
|
setTimeout(function() {
|
|
Modernizr.addTest('datauri', new Boolean(false));
|
|
}, 10);
|
|
}
|
|
|
|
var datauri = new Image();
|
|
|
|
datauri.onerror = function() {
|
|
Modernizr.addTest('datauri', new Boolean(false));
|
|
};
|
|
datauri.onload = function() {
|
|
if (datauri.width === 1 && datauri.height === 1) {
|
|
testOver32kb();
|
|
}
|
|
else {
|
|
Modernizr.addTest('datauri', new Boolean(false));
|
|
}
|
|
};
|
|
|
|
datauri.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
|
|
|
|
// Once we have datauri, let's check to see if we can use data URIs over
|
|
// 32kb (IE8 can't). https://github.com/Modernizr/Modernizr/issues/321
|
|
function testOver32kb() {
|
|
|
|
var datauriBig = new Image();
|
|
|
|
datauriBig.onerror = function() {
|
|
Modernizr.addTest('datauri', new Boolean(true));
|
|
Modernizr.addTest('datauri.over32kb', false);
|
|
};
|
|
datauriBig.onload = function() {
|
|
Modernizr.addTest('datauri', new Boolean(true));
|
|
Modernizr.addTest('datauri.over32kb', datauriBig.width === 1 && datauriBig.height === 1);
|
|
};
|
|
|
|
var base64str = 'R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
|
|
while (base64str.length < 33000) {
|
|
base64str = '\r\n' + base64str;
|
|
}
|
|
datauriBig.src = 'data:image/gif;base64,' + base64str;
|
|
}
|
|
});
|
|
});
|