0

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

事件将是:

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

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

window.addEventListener("load",myfunction);

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

我需要绑定哪些事件,如何绑定它们?

4

1 回答 1

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

( devtools layoutview"Box Model") 似乎也可以使用MozAfterPaint

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

于 2013-09-10T12:05:18.347 回答