交换 css 字体时是否会发出 js 事件?

2024-03-15

我可以判断字体何时已成功(或以其他方式)加载,然后使用 JS 进行操作吗?

Context

我正在使用 playwright 打印一系列文档。我目前正在加载这些字体https://fonts.googleapis.com/css2?family=Raleway:wght@100;300;600&display=swap有时waitUntil="networkidle"将在字体加载之前完成 ½ 秒的等待,从而导致文档以后备字体打印。

参考

我读过this:使用 font-display 控制字体性能 https://developers.google.com/web/updates/2016/02/font-display and this:导航和等待 https://www.checklyhq.com/learn/headless/basics-navigation/,并进行了很多搜索,但没有结果。

可能的解决方法

  • 我可以将字体下载到我的计算机上,这样它就成为本地资产,但这意味着如果我将来改变对字体的想法,请记住一个额外的步骤。这也使得在远程计算机上执行操作变得更加困难。
  • 我可以添加 >4 秒的厚垫作为显式等待,但是如果 N= 文档数量(每 100 个文档 6½),则会增加 4×N 秒的运行时间
  • 我可以编写一个服务工作人员来预缓存字体,然后发出一个事件,但这比应有的工作量要多,而且管理其生命周期似乎是一个痛苦的未来。

有简单的方法吗?


是的,你可以使用 Font Face Observer 来做到这一点,它是一个小的 @font-face 来监视字体的负载。这并不限制您使用任何类型的字体加载。

例如

var font = new FontFaceObserver('My Family', {
  weight: 400
});

font.load().then(function () {
  console.log('Font is available');
}, function () {
  console.log('Font is not available');
});

如果您想了解更多信息,请查看https://portalzine.de/dev/options-to-detect-when-a-font-face-has-been-loaded/ https://portalzine.de/dev/options-to-detect-when-a-font-face-has-been-loaded/

希望能回答您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

交换 css 字体时是否会发出 js 事件? 的相关文章

  • 新BFC“清”浮箱

    如示例所示 应用display inline block 到包含块似乎 清除 了其中的浮动框 wrapper inline block display inline block left column background color te
  • 禁用整个站点的 IE8 加速器

    是的 我知道有类似的问题 https stackoverflow com questions 499565 is it possible to disable ie8 accelerators on my website在 SO 上 但它已
  • Famo.us 滚动视图高度

    我正在尝试使用著名的顺序布局在滚动视图下方添加图像 但滚动视图的高度有问题 这就是我创建滚动视图的方式 var scrollview new Scrollview direction Utility Direction X options
  • jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

    我正在尝试使用 TypeScript 和 jspm system js 来引导 Web 应用程序进行模块加载 我还没有走多远 安装 jspm 后 并使用它来安装 jQuery jspm install jquery 以及基础知识 main
  • Chrome 版本 58 的 Redactor 编辑器文本格式问题

    我们正在使用编辑器 https imperavi com redactor https imperavi com redactor 版本 10 1 1 并且由于对项目的大量依赖而未迁移到 Redactor II 最近 我们在 Chrome
  • 很奇怪!调用 window.location 或 location.replace 会重定向到该页面,然后再次返回!

    我处于调试模式 因此我可以看到正在访问哪个页面 当我打电话时window location or window location replace 它会转到该页面 然后返回原始页面 怎么会这样 解决方案是添加 window location
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • 如何上传文件 - sails.js

    我可以下载图像和 pdf 但无法下载文档文件 doc pptx odt 下载文档 doc pptx odt 时 仅将其下载为 ZIP XML 文件 我可以做什么 我在用着 填写上传文件文档 https github com balderda
  • Promise 构造函数回调的主体何时执行?

    假设我有以下代码构造一个Promise function doSomethingAsynchronous return new Promise resolve gt const result doSomeWork setTimeout gt
  • javascript/jquery 禁用点击提交按钮,防止重复提交

    所以我的提交按钮如下所示 a href img src images user create product png border 0 a 当我双击它时 显然会双重提交 问题是 我将信息保存在数据库中 因此那里会有重复的信息 我不想那样 这
  • 使用 Socket.IO 时如何访问会话标识符?

    我有一个聊天 我需要管理独特的连接 我四处搜寻 但我找到的解决方案似乎都已被弃用 那么 如何使用 Socket IO 获取套接字的会话 ID 我在用着Node js http en wikipedia org wiki Node js Ex
  • MVC4 捆绑:由于 css3 功能而缩小失败?

    我想使用 MVC4 捆绑和缩小 但我总是在未缩小的 css 文件中收到此错误消息作为注释 Minification failed Returning unminified contents 534 29 run time error CSS
  • 在多个数组中搜索字符串,然后设置 var - jQuery

    我正在寻找基于字符串存在于哪个数组中设置一个变量 例如 var primary red blue yellow var secondary orange purple green 然后检查 purple 并返回它在 secondary 数组
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • tr 元素周围的边框不显示?

    Chrome Firefox 似乎不渲染边框tr 但如果选择器是 它会渲染边框table tr td 如何在 tr 上设置边框 我的尝试 不起作用 table tr border 1px solid black table tbody tr
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • 使用 div 或表格来包含链接列更好吗?

    我的页面底部有 3 列链接 每列都放入一个 div 中 所有三个 div 都包装在页面中央的一个大 div 中 这是更适合桌子的东西还是桌子不适合这项工作 您还可以使用 ul http www w3schools com tags tag

随机推荐

  • 为什么我的程序打印垃圾?

    My code include
  • 通过点击事件禁用锚点

    我有一个锚标记 它有一个链接到它的 jQuery 单击事件 此点击事件所做的第一件事就是通过将disabled 属性设置为true 将锚点设置为禁用 这会激发正确的外观 因为它会拾取myAnchor disabled 我的样式表中的样式 但
  • 通过 Wi-Fi 运行/安装/调试 Android 应用程序?

    我认为有一种方法可以通过 Wi Fi 测试开发中的应用程序 这可能吗 我希望能够摆脱手机的束缚并进行无线开发 参见论坛帖子 通过USB连接设备并确保调试正常 adb tcpip 5555 这使得设备开始侦听端口 5555 上的连接 查找设备
  • Google Drive API 应用程序数据从网络浏览器访问凭据(Javascript)

    我正在尝试从 Google Console 获取凭据 以通过以下方式访问我的应用程序驱动器数据Web browser Javascript 选项 以便稍后使用 Picker API 但是当我选择选项应用程序数据 访问属于您自己的应用程序的数
  • 我可以自动发送短信吗(无需用户批准)

    我对 Android 还很陌生 我正在尝试从 Android 应用程序发送短信 使用 SMS Intent 时 SMS 窗口将打开 用户需要批准 SMS 并发送 有没有办法无需用户确认就自动发送短信 谢谢 利奥尔 您可以使用此方法发送短信
  • cv2.imshow() 在线程中调用时启动但不弹出窗口

    cv2 imshow 在线程中调用时不会弹出窗口 docker中出现了python3的图标 但没有窗口 没有绘图 另外 我需要半双工通信的功能 因此我不能只删除线程 如何正确显示螺纹内的图片 任何回应表示赞赏 背景 MacOS Catali
  • Flash Builder 中的 TODO 任务列表

    Flash Builder 支持任务列表吗 我正在测试 PHP 的 Flash Builder 我可以在 PHP 代码中看到我的 TODO 但在 AS 或 MXML 中看不到 我找到了这个插件 http www richinternet d
  • 创建数据模型的最佳实践[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 对于当前的项目 我正在创建一个数据模型 是否有任何来源可以找到良好数据模型的 最佳实践 好的意味着灵活
  • REST 服务的最佳用途是什么?

    我知道像 Facebook 这样的网站现在正在使用 REST 服务 但我想知道其他使用 REST 的应用程序 以及是否存在特定情况下使用 REST 比其他方法更合理 REST 与 CRUD 数据服务无关 是的 您可以使用 REST 来执行类
  • 有没有办法在 PHP 中追溯创建基于时间/节点的 UUID?

    大多数基于时间 类型 1 的 UUID 是使用当前时间创建的 我正在将 MySQL 数据库迁移到 cassandra 并希望为存档项目创建基于时间的 UUID 有人可以提供一个如何使用过去的时间段创建 1 类 UUID 的示例吗 所有 uu
  • 如何发现我创建的物化视图的基础查询?

    我在 Postgres 9 3 中创建了一个物化视图 但此后我丢失了创建它的底层 SELECT 查询 我想删除物化视图 重写查询以包含更多数据 然后创建一个同名但具有新基础查询的物化视图 Just SELECT pg get viewdef
  • 创建键绑定以运行上一个或最后一个 shell 命令

    我经常想快速重新运行我使用的最后一个 shell 命令 我知道您可以将焦点转移到终端 向上箭头并输入 但我认为一定有比这三个步骤更好的方法 The sendSequencevscode 中的命令变得越来越强大 因此我寻找一种方法来创建一个可
  • 有没有一种简单的方法可以将 vulture 与 django 一起使用?

    我正在尝试清理 django 中一些混乱的遗留代码 Vulture http pypi python org pypi vulture看起来是一个不错的选择 但它似乎不知道如何查找 urls py 引用的视图函数 这并不奇怪 因为大多数函数
  • HTML 中的 valign 与 text-align

    我无法通过以下代码找出 HTML 中 valign 与 text align 之间的区别 table width 500 border 0 tr td style background color FFA500 h1 Main Title
  • 在解组操作期间将 nil="true" 转换为 null

    我从服务器接收 XML 该服务器的架构将几乎每个元素指定为
  • Java:jsr166y Phaser 的教程/说明

    这个问题 https stackoverflow com questions 1148125 resources on the upcoming fork join framework两年前被问到 但它提到的资源要么不是很有帮助 恕我直言
  • kivy 应用程序内的一个简单网页作为小部件

    我想在 ubuntu 64 位上运行的 kivy 应用程序中有一个 Web 视图 我查看了网络 浏览了 kivy 的文档并在 StackOverflow 上搜索答案 但我找不到任何可以完成我的工作的东西 一个简单的网页需要在 kivy 应用
  • 可以检测元素的样式是否只是浏览器默认样式还是由样式表或内联样式设置吗?

    我的 javascript 包含在 X 的网站中 但我对她的网站或她包含它的位置没有任何其他控制权 如果她的造型 element 我想不管它 但如果她没有 我有一个样式表 我会注入 有什么办法可以检测她是否有造型吗 检查它的高度是 0 还是
  • 如何用Go实现BitSet?

    我在Go中没有找到BitSet包 所以我尝试实现它 我想使用 uint64 数组来存储这些位 我需要分配 uint64 数组的位数 使用 Java 我可以定义一个采用整数的构造函数 虽然 Go 不提供构造函数 但我如何正确初始化 当用户调用
  • 交换 css 字体时是否会发出 js 事件?

    我可以判断字体何时已成功 或以其他方式 加载 然后使用 JS 进行操作吗 Context 我正在使用 playwright 打印一系列文档 我目前正在加载这些字体https fonts googleapis com css2 family