在打印预览之前等待 window.onbeforeprint 完成 DOM 操作

Wait for window.onbeforeprint to finish DOM manipulation before print preview

根据 official docs window.onbeforeprint 允许[s] 页面在打印开始前更改其内容(例如,可能删除横幅)。

然而,这在我的案例中不起作用,因为 window.onbeforeprint 是异步触发的——就像 JS 中的任何事件一样。我确实更改了事件处理程序中的 DOM 内容,但这些更改不在打印预览中。只有,当我取消第一次打印尝试并再次点击 Cmd+P 时,[=31= 中的(第一个事件的)变化] 是打印预览的一部分。

我这里说的不是长时间的 运行 过程,比如从网上取东西。 DOM.

里面的简单 copy/paste

所以我想知道我是否在这里做错了什么,或者 window.onbeforeprint 对于在打印之前更改内容几乎毫无意义。

经过一些额外的故障排除后,我可以确认,window.onbeforeprint 实际上允许在生成打印视图之前进行 DOM 操作。我的问题是框架:Vue.js。 Vue 组件没有及时更新。如果我直接在事件处理程序中操作 DOM,它就可以工作。