import { nextTick } from 'vue';
// 获取阿里字体图标
const getAlicdnIconfont = () => {
return new Promise((resolve, reject) => {
nextTick(() => {
// document.styleSheets 可以返回由网页中所用到的样式表组成的数组,但是不包括直接嵌在元素里的style。
const styles: any = document.styleSheets;
// 所有at.alicdn.com的 链接数组
let sheetsList = [];
// 所有class 名称
let sheetsIconList = [];
// 遍历 找出所有 链接里面带 at.alicdn.com的 链接
for (let i = 0; i < styles.length; i++) {
if (styles[i].href && styles[i].href.indexOf('at.alicdn.com') > -1) {
sheetsList.push(styles[i]);
}
}
// 遍历at.alicdn.com的 链接数组
for (let i = 0; i < sheetsList.length; i++) {
// 遍历 链接数组 里面的 cssRules属性返回样式表的所有项目
for (let j = 0; j < sheetsList[i].cssRules.length; j++) {
// 查找所有 .icon 的class类名的字段
if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) {
// 所有class 名称 去掉 ‘::before’
sheetsIconList.push(
`${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}`
);
}
}
}
if (sheetsIconList.length > 0) resolve(sheetsIconList);
else reject('未获取到值,请刷新重试');
});
});
};
export default getAlicdnIconfont
随便找地方 引入使用
import getAlicdnIconfont from '/@/utils/getStyleSheets'
const clik = () => {
getAlicdnIconfont().then((x:any) => {
console.log(x)
state.sheetsIconList = x
})
}
发表评论