UNPKG

modernizr

Version:

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser.

80 lines (69 loc) 2.38 kB
/*! { "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', 'addTest'], function(Modernizr, addTest) { // 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 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; } }); });