【JS】web浏览器访问本地系统字体列表

 1、核心API: queryLocalFonts;以下为主要注意事项:

  • 注意浏览器最低版本

  • 需用户授权

  • 网站是否安全,若不安全默认禁止获取本地字体列表


# 代码演示

export async function getLocalFonst() {
    if ("queryLocalFonts" in window) {
        try {
            const availableFonts = await (window as any).queryLocalFonts();
            if (!availableFonts.length) {
                return [];
            }
            return availableFonts;
        } catch (err) {
            return Promise.reject(err);
        }
    } else {
        return Promise.reject("浏览器版本太低 or 网站不安全");
    }
}

# 代码讲解

  1. if ("queryLocalFonts" in window) 
    1. 用来判断用户浏览器版本是否可调用queryLocalFonts方法。
    2. 但是!如果该网站不安全,那么谷歌浏览器强制禁止获取系统字体,queryLocalFonts方法一定为undefined
  2. const availableFonts = await (window as any).queryLocalFonts(); 

    1. 该方法是异步的,使用时需注意;

    2. 返回值为用户的字体列表数据,对象数组,对象类型为 FontData 类型;

    3. 但是!如果用户拒绝了你的字体获取申请,那么该返回值为[],一般系统字体列表为[]基本不可能,所以此时肯定就是用户拒绝了,一旦拒绝了,代码再次调用也没用,需要用户手动去浏览器设置里打开该网站的字体权限;

  3. try catch 说实话应该没啥用,以防万一 才加上去的。。MDN上写有两种错误类型,但没法验证。大佬们有方法验证的请赐教~~


就以上内容了,over~~

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Web开发中,常见的浏览器兼容性问题包括以下几个方面: 1. HTML和CSS的兼容性问题:不同浏览器对标签的解析可能不同,导致网页在不同浏览器上显示效果不同。 2. JavaScript的兼容性问题:不同浏览器JS语法和DOM的支持不同,导致JS代码在不同浏览器上可能出现错误或者不兼容的情况。 3. 布局和样式的兼容性问题:不同浏览器对CSS属性的解析可能不同,导致网页在不同浏览器上的布局和样式不一致,甚至出现错位等问题。 4. 插件和扩展的兼容性问题:不同浏览器对插件和扩展的支持不同,某些浏览器可能不支持某些插件或扩展,导致网页功能无法正常使用。 5. 性能和安全的兼容性问题:不同浏览器对性能和安全的支持不同,某些浏览器可能无法支持某些高性能或高安全的特性,导致网页无法正常运行或者存在安全隐患。 ### 回答2: 在web开发中,经常遇到的浏览器兼容性问题包括以下几个方面: 1. 样式兼容性:不同浏览器对CSS的解析方式存在差异,比如盒模型、默认字体和行高等的不同表现,需要针对不同浏览器编写特定的样式来保证网页在各种浏览器中正确显示。 2. JavaScript兼容性:不同浏览器JavaScript的支持程度不同,一些旧版本浏览器可能不支持ES6的一些新特性,需要使用兼容性处理方法或者降级方案来确保JavaScript代码的兼容性。 3. HTML兼容性:有些浏览器可能对HTML标签或属性的解析存在差异,所以在开发过程中需要注意使用标准化的HTML代码和属性来提高兼容性。 4. 布局和定位兼容性:不同浏览器对于网页布局和定位的解析规则可能存在差异,如盒模型的解析、浮动元素的处理和Flexbox布局等,需要针对不同浏览器编写特定的布局和定位代码。 5. 响应式设计兼容性:在不同设备上,浏览器窗口大小的变化会对网页的显示产生影响,一些浏览器对响应式设计的支持不完善,需要通过媒体查询和流式布局等技术来处理。 总结来说,web开发中常见的浏览器兼容性问题包括样式、JavaScript、HTML、布局和定位、以及响应式设计方面的差异。为了确保网页在各种浏览器中都能正确显示和运行,开发者需要了解不同浏览器的特性和兼容性问题,并采取相应的兼容性处理措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值