我正在使用 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/