forked from youzan/tiny-loader.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloader.min.js
More file actions
7 lines (7 loc) · 1.5 KB
/
loader.min.js
File metadata and controls
7 lines (7 loc) · 1.5 KB
1
2
3
4
5
6
7
/**
* @preserve Tiny-Loader: A small loader that load CSS/JS in best way for page performanceIs.
*
* @version 1.0.1
* @copyright The Youzan Limited [All Rights Reserved]
* @license MIT License (see LICENSE.txt)
*/(function(e,t){"use strict";function s(e){return e.readyState==="complete"||e.readyState==="loaded"}function o(e,n,i){var s=t.createElement("link");s.rel="stylesheet",f(s,i,"css"),s.async=!0,s.href=e,r.appendChild(s)}function u(e,n,i){var s=t.createElement("script");s.charset="utf-8",f(s,i,"js"),s.async=!n.sync,s.src=e,r.appendChild(s)}function a(e,t){var n;e.sheet&&(n=!0),setTimeout(function(){n?t():a(e,t)},20)}function f(t,n,r){function f(){t.onload=t.onreadystatechange=null,t=null,n()}var o="onload"in t,u=r==="css";if(u&&(i||!o)){setTimeout(function(){a(t,n)},1);return}o?(t.onload=f,t.onerror=function(){t.onerror=null,e._cdnFallback(t)}):t.onreadystatechange=function(){s(t)&&f()}}function l(e,t,r,i){function s(){var n=t.indexOf(e);n>-1&&t.splice(n,1),t.length===0&&i()}n.test(e)?o(e,r,s):u(e,r,s)}function c(e,t,n){var r=function(){n&&n()};e=Array.prototype.slice.call(e||[]);if(e.length===0){r();return}for(var i=0,s=e.length;i<s;i++)l(e[i],e,t,r)}function h(t,n){s(t)?n():e.addEventListener("load",n)}var n=new RegExp("\\.css"),r=t.head||t.getElementsByTagName("head")[0],i=+navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\/?(\d+).*/i,"$1")<536,p={async:function(e,n){h(t,function(){c(e,{},n)})},sync:function(e,n){h(t,function(){c(e,{sync:!0},n)})}};return e.Loader=p,p})(window,document);