当元素需要在扩展中重新呈现时触发函数

Trigger a function when elements need re-rendered in an extension?

本文关键字:新呈现 函数 元素 扩展      更新时间:2023-09-26

我有一个函数,可以在我的 Firefox 扩展中定位一个元素,每当事件导致窗口/铬布局更改时,我都需要调用该函数。

事件将是:

  1. 创建新窗口时,在呈现镶边之后。
  2. 重新调整窗口大小时。
  3. 任何其他可能导致镶边布局更改大小或形状的事件?

(*) 现在,该函数在创建新窗口时使用以下命令运行时运行:

window.addEventListener("load",myfunction);

但这会在渲染镶边之前运行,并且元素大小的值不稳定。我需要它在 Firefox 确定 chrome 元素的实际大小和位置后运行。

我需要绑定哪些

事件,以及如何绑定它们?

  1. 我也有类似的情况,并没有真正找到一个好的解决方案。但是,非标准MozAfterPaint事件可能会有所帮助,但会带来相当大的性能损失(因此,请确保在不再需要它时将其删除)。
  2. resize事件应该可以解决问题。
  3. 有很多事情可能会导致事情发生变化。新的CSS/图像加载,工具栏自定义等 1.和 2.但是,应该涵盖大部分(全部?

devtools layoutview("盒子模型")似乎也使用MozAfterPaint

如果可能的话,你应该尽量避免自己计算大小,但是,通过使用XUL/HTML flexbox模型和没有固定大小(或仅最小/最大大小)的CSS。