44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
/*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */
|
|
(function( w ){
|
|
// rel=preload support test
|
|
if( !w.loadCSS ){
|
|
return;
|
|
}
|
|
var rp = loadCSS.relpreload = {};
|
|
rp.support = function(){
|
|
try {
|
|
return w.document.createElement( "link" ).relList.supports( "preload" );
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
};
|
|
|
|
// loop preload links and fetch using loadCSS
|
|
rp.poly = function(){
|
|
var links = w.document.getElementsByTagName( "link" );
|
|
for( var i = 0; i < links.length; i++ ){
|
|
var link = links[ i ];
|
|
if( link.rel === "preload" && link.getAttribute( "as" ) === "style" ){
|
|
w.loadCSS( link.href, link, link.getAttribute( "media" ) );
|
|
link.rel = null;
|
|
}
|
|
}
|
|
};
|
|
|
|
// if link[rel=preload] is not supported, we must fetch the CSS manually using loadCSS
|
|
if( !rp.support() ){
|
|
rp.poly();
|
|
var run = w.setInterval( rp.poly, 300 );
|
|
if( w.addEventListener ){
|
|
w.addEventListener( "load", function(){
|
|
rp.poly();
|
|
w.clearInterval( run );
|
|
} );
|
|
}
|
|
if( w.attachEvent ){
|
|
w.attachEvent( "onload", function(){
|
|
w.clearInterval( run );
|
|
} )
|
|
}
|
|
}
|
|
}( this )); |