require.js添加css文件实现代码:css.min.js

define(
    function () {
    if (typeof window == "undefined")return {
        load: function (n, r, load) {
            load()
        }
    };
    var head = document.getElementsByTagName("head")[0];
    var engine = window.navigator.userAgent.match(/Trident/([^ ;]*)|AppleWebKit/([^ ;]*)|Opera/([^ ;]*)|rv:([^ ;]*)(.*?)Gecko/([^ ;]*)|MSIEs([^ ;]*)/) || 0;
    var useImportLoad = false;
    var useOnload = true;
    if (engine[1] || engine[7])useImportLoad = parseInt(engine[1]) < 6 || parseInt(engine[7]) <= 9; else if (engine[2])useOnload = false; else if (engine[4])useImportLoad = parseInt(engine[4]) < 18;
    var cssAPI = {};
    cssAPI.pluginBuilder = "./css-builder";
    var curStyle;
    var createStyle = function () {
        curStyle = document.createElement("style");
        head.appendChild(curStyle)
    };
    var importLoad = function (url, callback) {
        createStyle();
        var curSheet = curStyle.styleSheet || curStyle.sheet;
        if (curSheet && curSheet.addImport) {
            curSheet.addImport(url);
            curStyle.onload = callback
        } else {
            curStyle.textContent = '@import "' + url + '";';
            var loadInterval = setInterval(function () {
                try {
                    curStyle.sheet.cssRules;
                    clearInterval(loadInterval);
                    callback()
                } catch (e) {
                }
            }, 10)
        }
    };
    var linkLoad = function (url, callback) {
        var link = document.createElement("link");
        link.type = "text/css";
        link.rel = "stylesheet";
        if (useOnload)link.onload = function () {
            link.onload = function () {
            };
            setTimeout(callback, 7)
        }; else var loadInterval = setInterval(function () {
            for (var i = 0; i < document.styleSheets.length; i++) {
                var sheet = document.styleSheets[i];
                if (sheet.href == link.href) {
                    clearInterval(loadInterval);
                    return callback()
                }
            }
        }, 10);
        link.href = url;
        head.appendChild(link)
    };
    cssAPI.normalize = function (name, normalize) {
        if (name.substr(name.length - 4, 4) == ".css")name = name.substr(0, name.length - 4);
        return normalize(name)
    };
    cssAPI.load = function (cssId, req, load, config) {
        (useImportLoad ? importLoad : linkLoad)(req.toUrl(cssId + ".css"), load)
    };
    return cssAPI
}
);
原文地址:https://www.cnblogs.com/imnzq/p/6950793.html