/*! { "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; } }); });