我正在使用Google的这些图标字体: https://material.io/icons/
我正在开发一个网络扩展程序和一些像Github这样的网页阻止我的图标,我试图检查字体是否可用的香草js,这里的问题是我不知道什么时候我需要确认字体是否已加载。
我正在使用setTimeOut,但我真的很讨厌这种方法。
我的代码:
function confirmFont(view) {
setTimeout(function(){
if(!document.fonts.check("12px Material-Icons")) {
.....
}
}, 2000);
}
我尝试使用文档就绪和窗口加载,但这不起作用我需要更具体。
答案 0 :(得分:2)
如果您已使用document.fonts
,为什么不使用该界面附带的Events
?由于只要字体面集完成加载就会触发loadingdone
事件,您实际上可以使用事件侦听器来检查字体。以下是一个工作示例:
!function() {
// Setting up listener for font checking
var font = "1rem 'Material Icons'";
document.fonts.addEventListener('loadingdone', function(event) {
console.log(`Checking ${font}: ${ document.fonts.check(font)}`);
})
// Loading font
var link = document.createElement('link'),
head = document.getElementsByTagName('head')[0];
link.addEventListener('load', function() {
console.log('Font loaded');
})
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = 'https://fonts.googleapis.com/icon?family=Material+Icons';
head.appendChild(link);
}()

<i class="material-icons md-48">face</i>
&#13;
答案 1 :(得分:0)
我已通过以下方式解决了这个问题:
document.fonts.ready.then(function () {
if(!document.fonts.check("12px Material-Icons")) {
...
}
});