Javascript 延迟加载flash对象

Javascript 延迟加载flash对象,javascript,jquery,flash,dom,lazy-loading,Javascript,Jquery,Flash,Dom,Lazy Loading,我正在使用jquerylazy加载插件延迟在大型网页上加载折叠下面的图像。这很有效。现在,我想把同样的技术应用到一个大的闪光物体上,它也在褶皱下面。我不认为lazy load插件可以处理非图像的事情(至少到目前为止看起来不是这样),我可能必须自己做。在这种情况下,如何检测包含闪光对象的区域何时变得可见 编辑:我想我可以使用jquerydimensions插件破解一些东西,并跟踪包含Flash对象的div Edit2:好的,我已经就这个问题悬赏了。如果有人能在我周末有机会玩这个游戏之前找到它,+2

我正在使用jquerylazy加载插件延迟在大型网页上加载折叠下面的图像。这很有效。现在,我想把同样的技术应用到一个大的闪光物体上,它也在褶皱下面。我不认为lazy load插件可以处理非图像的事情(至少到目前为止看起来不是这样),我可能必须自己做。在这种情况下,如何检测包含闪光对象的区域何时变得可见

编辑:我想我可以使用jquerydimensions插件破解一些东西,并跟踪包含Flash对象的
div


Edit2:好的,我已经就这个问题悬赏了。如果有人能在我周末有机会玩这个游戏之前找到它,+250给你。:)

如果内存正常,将DOM中flash对象的
wmode
参数设置为
opaque
即可。关于各种
wmode
设置有一些讨论

hm,我不知道这个jquery prugin是如何工作的,但是你说如果你使用一个图像,它会满足你的需要-那么为什么你不把一个图像放在你的flash对象应该在的地方,为这个图像设置一个
onload
,如果这个onload被触发,将图像替换为所需的flash对象(这是假设jquery plungin做了一些疯狂的事情,因此之前不会触发onload)


编辑:我知道img标签的
onload
-属性是不被正式允许的,但大多数(所有?)现代浏览器都支持这一点(据我所知)-也许这有助于获得没有这些问题的另一个解决方案…

我认为最简单的方法是编辑,并将“查看时检测”元素代码与图像特定代码分开。in-view detect代码会在元素(在您的例子中是容器/占位符div)上触发一个“出现”事件,您可以将其挂接以加载Flash。

lazyLoad无法与脚本一起工作的原因是因为lazyLoad查看Flash对象上缺少的“src”属性(和)

在lazyLoad src中,您应该修改引用“src”属性的任何位置。您需要知道元素是对象还是正确地嵌入和引用其“源”

例如(未经测试):


如果您仍然有兴趣赠送这笔奖金,请告诉我,我会进一步研究。

查看延迟加载插件的源代码,您会发现没有太多神奇的事情发生。基本上有两件有趣的事情发生在那里:

  • 有一种方法通过获取包含窗口的高度和元素的偏移来确定元素相对于折叠的位置
  • 此外,还有一个事件处理程序,用于侦听滚动事件,检查是否需要显示任何“隐藏”图像
因此,为了延迟加载,我只需重用或删除确定给定元素是否在视图中的函数。连接到scroll事件,如果需要显示某些内容,则使用swfobject嵌入SWF。应该这样做


还可以看看lazy load插件,这真的不难。

wmode与lazy load的关系到底如何?我不确定它是否与lazy load有关,但是我们发现,在使用替代wmode设置时,视口中不存在的Flash对象在滚动到视图中之前没有初始化。
/* Save original only if it is not defined in HTML. */
if (undefined == $(self).attr("original")) {
   $(self).attr("original", $(self).attr("src") || $(self).attr("data") || $(self).find("embed").attr("src") );
}