我可以在没有重新加载的情况下移动DOM中的Flash对象吗?

JKS*_*JKS 10 flash dom jquery-ui

我正在尝试在包含Flash对象的包装元素上使用jQuery UI库中的缩放效果.

我遇到的问题是我的包装器的内容会自动移动到另一个包装器(.ui-effects-wrapper)中,当发生这种情况时,Flash对象会重新加载.

当然,这里的具体问题与jQuery UI采用的策略有关 - 但一般来说,是否可以在不重新加载的情况下在DOM中移动Flash对象?

zwo*_*wol 13

我只知道Gecko(Firefox的渲染引擎)是如何工作的.在该引擎中,不,如果不重新加载关联的Flash对象,则无法在DOM树中移动<object>或移动<embed>.它实际上比这更糟糕:你不能做任何会导致Flash对象绘制的CSS框被破坏的事情.Gecko将CSS框视为短暂的; 几乎任何涉及包含该子树的子树的DOM修改<object>都会破坏相关的CSS框,因此任何数量的CSS操作都会从明显的(设置display:none)到模糊的(变更opacityoverflow)变化.但是插件的状态附加到框树而不是DOM树,因此如果框被销毁并重新创建,则插件会重新加载.

这被认为是一个错误 - 错误90268,在撰写本文时已有九年了.特别是,请参阅评论80,了解为什么会出现这种情况以及为什么会这么做,但令人遗憾的是,如果再过九年没有得到修复,我也不会感到惊讶.

您可以通过将所有插件状态导出到包含页面中的JavaScript来解决此问题.

更新:仅仅两年后,错误已得到修复!该修复程序将在Firefox 13中进行,目前计划于2012年6月5日发布; 如果你想早点,它将在4月24日处于"测试阶段",并在3月13日(今天)之后不久就会出现"极光". 乔什·阿斯(Josh Aas)因为摔跤这个问题而值得称赞 - 修复程序经历了54次修订并修改了超过3,000行代码.