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 通常是隐藏的,但对象无论如何都会在 Load 时初始化。然而,当应用程序加载时,就会显示这个 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 - 如何强制资源管理器重新加载 Flex 页面(嵌入 HTML 中的 swf)?

apache-flex - Intellij/Flex 4.91编译问题

javascript - React - 如何给每个子组件一个唯一的引用?

javascript - 通过 javascript DOM 创建 html(真正的基本问题)

javascript - 如何在不使用表单元素的情况下将div内容添加到mysql

javascript - 从狭窄的输入中仅获取文本值的实际可见部分(获取输入 "scroll")

apache-flex - 如何将 Assets 添加到 Flex 库?

html - IE10 直接写入 'Empty Text Node' 吗?

javascript - 使用 Javascript 转义空白字符

javascript - javascript中FileList中的项目和长度是什么