UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

47 lines (46 loc) 1.43 kB
"use strict"; exports.__esModule = true; exports.loadCss = loadCss; var _isBlobUrl = require("./isBlobUrl"); var _isDataUrl = require("./isDataUrl"); var _isUrl = require("./isUrl"); var _loadResource = require("./loadResource"); var cache = Object.create(null); /** * 加载 CSS 样式,支持链接和内容。 * * @param urlOrContent 链接或内容 * @example * ```typescript * loadCss('https://foo.bar/global.css') * loadCss(`body { font-size: 20px; }`) * ``` */ function loadCss(urlOrContent) { return (urlOrContent in cache ? Promise.resolve(cache[urlOrContent]) : (0, _isUrl.isUrl)(urlOrContent) || (0, _isDataUrl.isDataUrl)(urlOrContent) || (0, _isBlobUrl.isBlobUrl)(urlOrContent) ? (0, _loadResource.loadResource)({ type: _loadResource.LoadResourceUrlType.css, path: urlOrContent }).then(function (res) { return res[0]; }) : new Promise(function (resolve) { var el = document.createElement('style'); el.setAttribute('type', 'text/css'); if ('textContent' in el) { el.textContent = urlOrContent; } else { // @ts-ignore el.styleSheet.cssText = urlOrContent; } document.getElementsByTagName('head')[0].appendChild(el); resolve(el); })).then(function (el) { cache[urlOrContent] = el; return { el: el, destroy: function destroy() { delete cache[urlOrContent]; el.parentNode.removeChild(el); } }; }); }