我正在使用jQuery延迟加载插件来推迟在大型网页上加载重叠图像。这非常有效。现在,我想将相同的技术应用于一个大型的Flash对象,这个对象也不尽如人意。我不认为延迟加载插件处理不是图像的东西(至少到目前为止它看起来不那么直接。)我可能必须自己做。在这种情况下,如何检测包含Flash对象的区域何时可见?
编辑:我想我可以使用jQuery维度插件破解一些内容,并跟踪包含Flash对象的div
。
Edit2:好的,我在这个问题上开了一笔赏金。如果有人能够在我有机会在周末玩这个游戏之前得到它,请给你+ 250。 :)
答案 0 :(得分:2)
如果内存正确地为我服务,将DOM中的flash对象的wmode
参数设置为opaque
将执行此操作。关于各种wmode
设置here
答案 1 :(得分:0)
嗯,我不知道这个jquery prugin是如何工作的,但你说如果使用图像它会做你想要的 - 所以为什么不把图像放在你的flash对象应该的位置,设置一个{ {1}}对于这个图像,如果这个onload被触发,你用你想要的flash对象替换图像(假设jquery-plungin做了疯狂的东西,所以之前没有触发onload)。
编辑:我知道img-tags的onload
- 属性是不允许正式的,但大多数(所有?)现代浏览器支持这个(据我所知) - 也许这有助于在没有这些问题的情况下获得另一种解决方案...
答案 2 :(得分:0)
我认为最简单的方法是编辑lazy load plugin并将特定于图像的代码中的detect-when-in-view代码分开。视图中的检测代码会触发元素(在您的情况下是容器/占位符div)上的“出现”事件,您可以将其挂钩以加载Flash。
答案 3 :(得分:0)
lazyLoad不能与您的脚本一起使用的原因是因为lazyLoad查看了flash对象(和)中不存在的“src”属性。
在lazyLoad src中,您应该修改引用“src”属性的任何位置。您需要知道元素是对象还是嵌入并正确引用它们的“源”。
例如(未经测试):
/* 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") );
}
如果你仍然有兴趣放弃赏金让我知道,我会再多看一下。
答案 4 :(得分:0)
查看延迟加载插件的源代码,你会发现没有太多魔法发生。基本上有两件有趣的事情发生在那里:
因此,为了延迟加载,我只是重用或删除确定给定元素是否在视图中的函数。连接到滚动事件,如果需要显示某些内容,则使用swfobject嵌入SWF。应该这样做。
另外看一下延迟加载插件source,这真的不难。