设置display:none后,Flash对象方法不可用

时间:2012-08-28 17:11:35

标签: javascript css flash object youtube

这是我目前面临的情况。 我有一个嵌入式YouTube视频<object>。该对象公开了javascript API来控制播放器。 将display:none设置为对象或包装对象的div后,方法将变为未定义。 一旦dispay css属性被设置回&#39; block&#39; - 方法再次可用。 我创造了一个展示问题的小提琴。

Show case fiddle

我想知道它为什么会发生,是否有可能监控对象的状态并查看它是否已经加载并准备好使用?

提前致谢!

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

2 个答案:

答案 0 :(得分:0)

在IE中可以正常使用。

我的假设是,无论你使用什么浏览器,都认为通过“优化”东西是聪明的。 Flash对象是隐藏的吗?嗯,你不可能想用它做任何事情,没办法。 [/讽刺]

我建议将元素移出屏幕而不是隐藏它:

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

答案 1 :(得分:0)

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

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

让淡入淡出动画正常工作。

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