vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
47 lines (46 loc) • 1.43 kB
JavaScript
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);
}
};
});
}
;