javascript 是否有一个浏览器API告诉我应用于浏览器的首选项(字体系列,字体大小,焦点大小等)?

pod7payv  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(109)

我想知道是否有API来了解用户应用于浏览器的首选项,例如font-size,font-family等。
我写这个问题是因为我被要求将浏览器首选项应用到我的HTML页面。例如,如果用户视力不好,浏览器字体大小增大,我想将该大小应用于我的网页。
我的目标是这样的:

document.getElementById("myBodyTag").style.fontSize = browser.getCurrentFont()

其中“浏览器”是我正在寻找的API。

编辑:我寻找这个API的真实的原因是因为我的项目的客户端,阅读the technical reference of the European Union Accessibility Law,声明我的Web应用程序必须继承平台设置,正如你可以在下面的图片中看到的那样。

在我看来,他们没有正确理解文档中的内容,因为在应用于网页的规则和应用于软件的规则之间存在不明确的联系。

jdgnovmf

jdgnovmf1#

不知道这是否是你的意思,但是window.getComputedStyle为一个(没有以任何方式修改)文档提供了用户为他/她的浏览器设置的当前首选项。类似于(尝试修改浏览器字体样式设置并重新运行代码片段):

const nativeStyle = getComputedStyle(document.documentElement);

console.log (`Document font: ${nativeStyle.fontFamily} ${
  nativeStyle.fontStyle} ${nativeStyle.fontSize}`);
vltsax25

vltsax252#

对于许多事情,您不需要直接读取用户设置,而是让它们在需要的地方隐式应用。
让我们以font-size和焦点大小(我猜你指的是outline)为例。如果你定义你的文本,以及应该与文本一起缩放的元素,以相对单位,理想的是rem,你都设置为适应用户在浏览器设置中选择的字体大小。如果他在设置中将字体大小从16px更改为20px,则您的文本以及rems中定义的其他元素的尺寸将随之缩放。
说到font-family和a11y,我不确定用户定义它是否有意义。作为网站作者,你必须知道哪种字体在你的网站中是有意义的,并且效果最好。如果你想变得容易理解,只要选择标准字体,如Times New Roman和Arial,你就可以了。
也就是说,如果你真的想应用用户设置,你可以这样做:

font-family: initial;
font-size: initial;

这将应用用户浏览器中配置的字体和大小。
如果你还想通过编程方式了解它们的默认值,你可以创建一些虚拟元素,在上面设置一些初始样式,比如:

font-family: initial;
font-size: initial;

并致电:

getComputedStyle($0).fontFamily

当然,您可以通过这种方式读取的浏览器设置数量有限。
PS:如果你需要更多,那么这就变成了道德问题(对用户了解太多)和实际问题(为什么你甚至需要它)。

相关问题