
static.js.vendor.modernizr.feature-detects.url.data-uri.js Maven / Gradle / Ivy
The newest version!
/*!
{
"name": "Data URI",
"property": "datauri",
"caniuse": "datauri",
"tags": ["url"],
"builderAliases": ["url_data_uri"],
"async": true,
"notes": [{
"name": "Wikipedia article",
"href": "http://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', 'addTest'], function(Modernizr, addTest) {
// https://github.com/Modernizr/Modernizr/issues/14
Modernizr.addAsyncTest(function() {
/* jshint -W053 */
// IE7 throw a mixed content warning on HTTPS for this test, so we'll
// just blacklist 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() {
addTest('datauri', false);
}, 10);
}
var datauri = new Image();
datauri.onerror = function() {
addTest('datauri', false);
};
datauri.onload = function() {
if (datauri.width == 1 && datauri.height == 1) {
testOver32kb();
}
else {
addTest('datauri', 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() {
addTest('datauri', true);
Modernizr.datauri = new Boolean(true);
Modernizr.datauri.over32kb = false;
};
datauriBig.onload = function() {
addTest('datauri', true);
Modernizr.datauri = new Boolean(true);
Modernizr.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;
}
});
});
© 2015 - 2025 Weber Informatics LLC | Privacy Policy