设置显示后Flash对象方法不可用:无

Flash object method unavailable after setting display:none

本文关键字:方法 显示 Flash 对象 设置      更新时间:2023-09-26

这是我目前面临的情况。我有一个嵌入的youtube视频作为<object>。该对象公开javascript API来控制播放器。在对对象或包装对象的div设置display:none后,方法将变为未定义。一旦dispay-css属性设置回"block",这些方法将再次可用。我制作了一个Fiddle来展示这个问题。

展示案例小提琴

我想知道为什么会发生这种情况,是否可以监视对象的状态,看看它是否已经加载并准备好使用?

谢谢!

注意:问题可以在Chrome中看到

当使用NPAPI插件(即不是Internet Explorer)时会发生这种情况。您可以将项目移出屏幕(需要display:absolute/display:relative),也可以将flash对象设置为包含html元素的100%大小,并将该元素的高度或宽度设置为.01px。不要使用$(elem).fadeOut,因为在动画结束时,jq会设置display:none。相反,使用$(elem).fadeTo,它不会更改其他css属性。还需要添加一个新的参数

<param name="wmode" value="transparent">

以使淡入淡出动画工作。

http://jsfiddle.net/ynuMT/4/

在IE中运行良好。

我的假设是,无论你使用什么浏览器,都认为通过"优化"内容是聪明的。Flash对象被隐藏了吗?好吧,你不可能想用它做任何事情,不可能。[/讽刺]

我建议将元素从屏幕上移开,而不是隐藏它:

#elem {
    position: fixed;
    right: 100%;
}