我正在为一种奇怪的(特定于 Webkit 的?)效果而苦苦挣扎:
当更改插件对象的“位置”属性时,我的插件被删除并立即被另一个新实例化的插件替换。
这意味着我将丢失当前插件的所有状态并使用一个新插件重新开始。
我不知道这是否是特定于 Webkit 的,因为我的插件只能在我们的嵌入式平台上运行。
代码如下:
<object id="mypluginobject" type="video/myplugin" style="width=800px, height=600px">
在 javascript 中,我这样做:
var myobject = $('mypluginobject');
myobject.style.width = '1280px'; // OK
myobject.style.height= '720px'; // OK
myobject.style.position='fixed'; // myobject disapears and is replaced by a new instance
在 NPAPI 代码中,我可以看到调用了 NPN_Destroy()
,紧接着调用了 NPN_New()
,所有这些都具有相同的 NPP
指针。
这让我想知道为什么这个“位置”属性似乎会触发对我的对象的完全替换。
现实生活中发生的情况是,我丢失了所有运行时信息,视频停止,而且我无法恢复。 我知道我的平台很奇特,所以所有这些可能会有副作用:
- Webkit 322
- 在 Qt 4.7.2 上运行
- 在 DirectFB 上
有什么想法吗?
最佳答案
不幸的是,这在所有浏览器上都是非常标准的事情。您遇到的问题是,当您更改“位置”时,它会更改对象所在的容器;通过这样做,您实际上会导致浏览器(在内部)将其从页面中删除,然后再将其添加回去。
您可以通过更改某些浏览器上的“可见性”或“显示”来导致完全相同的问题。 “溢出”也会普遍触发这种情况。在某些情况下,将高度和宽度设置为小于 1px x 1px 也是一个类似的坏主意。插件不是很有趣吗?
避免对象及其父元素上的这些东西,你会没事的。我使用的解决方法是在我需要移动插件时始终绝对定位插件本身,然后我使用 jquery 计算“定位”元素的大小和位置,我通常会做任何我想做的事情。它可以移动,并且在它移动的任何时候(或在事件或计时器上)我计算新位置并将对象标签的 float 绝对定位父 div 重新定位到新位置。这有点老套,特别是如果您想修复它,但这是我所知道的解决问题的唯一方法。
当然,我想您也可以让您的插件善于恢复其状态,这样它何时被删除和重新添加都无关紧要。 =]
关于css - 在 Webkit 中更改其 'position' 样式属性时删除的插件实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198418/