javascript - 隐藏后Flash对象的方法不可用

原文 标签 javascript apache-flex dom

我正在使用Chrome 23.0.1271.97和jQuery开发Javascript。我有一个Flex <object>,HTML如下:

<div id="chartdiv" style="display:none;">
<object type="application/x-shockwave-flash" id="barchart" data="barchart.swf" style="width:100%;height:100%;">
<param name="movie" value="barchart.swf" />
<param name="quality" value="high" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
</object>
</div>


div通常是隐藏的,但是无论如何该对象都是在onLoad上初始化的。但是,加载应用程序后,将显示此div,一切正常。问题是,从那时开始,如果它再次被隐藏(只是被隐藏,如$div.hide()一样,未初始化),然后又重新显示,则我无法访问Flex对象方法。

我得到Object #<HTMLObjectElement> has no method 'blah'。它似乎已被修改,但是我不确定是什么原因造成的。

那有什么变化?好问题。成功加载后,该对象将正常工作,并在控制台中如下所示:

<object type=​"application/​x-shockwave-flash" id=​"barchart" data=​"barchart.swf" style=​"width:​100%;​height:​100%;​">​
</object>​


尝试失败(显示,隐藏和返回之后),对象看起来像这样:

<object type=​"application/​x-shockwave-flash" id=​"barchart" data=​"barchart.swf" style=​"width:​100%;​height:​100%;​">​
<param name=​"movie" value=​"barchart.swf">​
<param name=​"quality" value=​"high">​
<param name=​"allowScriptAccess" value=​"always">​
<param name=​"wmode" value=​"transparent">​
</object>​


这使我感到困惑,也许是我在错误的位置寻找东西。我已经遍历了前端Javascript代码,除了通过jQuery隐藏对象之外,似乎没有任何修改对象的调用。有人告诉我Flex对象不知道它是否显示。在要求查看代码之前,我想确保自己处在正确的轨道上。

最佳答案

这是已知问题。如果您不想重置Flash对象,最好的解决方案之一就是将其大小设置为几个像素,这对于用户来说是不可见的,但对于浏览器来说是“可见的”。

关于javascript - 隐藏后Flash对象的方法不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936702/

相关文章:

javascript - 如何在数组中搜索?

javascript - PHP(AJAX)的对象数组

apache-flex - 我无法将自定义事件从一个模块分派(dispatch)到另一个模块,因为它给出了 TypeError : Error #1034: Type Coercion failed:

apache-flex - 使用 actionscript 3 修剪字符串

java - 使用AMF连接发送弹性消息时出现不受支持的AMF版本错误

javascript - 找到一个嵌套的 div 标签

javascript - JavaScript:如何更改事件的顺序?

javascript - React DOM是否必须使用className?为什么我没有看到任何警告?

javascript - 如何使用php将文件从Google驱动器复制到另一台服务器

javascript - 使用jQuery创建新DOM时无法读取if语句