jQuery-Flash SWF在可见之前不会初始化-我可以强制它们初始化吗?

我有一个应用程序,需要在一系列行中渲染大约100个Flash图形(以及其他DOM东西),这些行在垂直方向上超出当前可见窗口多次延伸-换句话说,用户必须向下滚动才能看到所有不同的图.

此应用程序也是动态的,当用户更改DOM中的值(在页面上的任意位置)时,它将需要同时将更改传播到所有Flash图.

因此,我设置了所有externalInterface回调,并小心地让任何JS开始运行,直到非常重要的“ flashIsReady”调用为止,并且…在我尝试用新数据更新()现有的swf之前效果很好.

这是行为:
-IE / Fox中的所有swfs加载都(初始)=良好.
-使用新内容更新swfs可以在IE中运行,但不能在Fox中运行=不好
-在Fox中更新具有新内容的swfs的方法-仅在以下条件下-我向下滚动到页面底部,然后回到顶部-之前-我触发了update().

因此,每当一个名为JS的瑞士法郎说“闪存已准备就绪”时,我便开始追踪,然后我意识到,Firfox仅在瑞士法郎变得可见时才对其进行渲染.老实说-很好,实际上,我很确定IE也可以做到这一点.但是问题在于,不仅Firefox不初始化swf,而且Firefox甚至不承认swf存在(如果尚不可见,则在加载后等待).

事实证明,您会看到JS错误

“ [[FlashDOMID] .FlashMethod不是函数”.

但是,向下滚动一点,等待其可见,然后突然开始显示轨迹

“已准备好闪存”,“已准备好闪存”,一旦它们全部准备就绪,一切就可以正常工作.

有人告诉我FF不会在可见之前初始化swf的-我可以强制执行吗?如果您需要,我可以发布代码…但是它很繁重(很难从其余部分中删除相关的代码),并且(如果您愿意)我希望避免使用它.

问题很简单-您是否曾经发生过这种情况?如果是,您是否找到了解决方案?是否有人现在如何强制尚未显示的瑞士法郎初始化?多谢你们.

最佳答案
所以…

经过大量的论坛搜索-我同意,没有优雅的方法可以做到这一点哈哈!我最终寻求的解决方案基本上是为$(document).ready()上的每个swf制作JS对象.

基本上,JS对象将具有各种值,其中包括“ data”和“ isReady”.当一个swf变得可见并且会调用JS说“ im ready”时,我会简单地接住那个调用,然后找到它所引用的JS对象(我设法通过将每个swf的DOM id作为其之一传递给它flashVars;是的,这让我感到肮脏).从那里开始,基本上只是一个游戏,确保在我尝试操作每个JS之前,每个JS都具有“ isReady”.

在整个混乱中,唯一的优雅之处在于,通过使用JS对象,我仍然可以通过简单地更新各自JS对象中的“ data”属性来将新数据应用于“隐藏” swfs.然后,当swf最终变得可见时,我将更新它拥有的所有数据(即当前数据),并且效果很好,但是,我仍然同意这整个情况是不幸的.

所以… *回答.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...