有没有理由在2011年抛弃javascript flash嵌入方法?

时间:2010-11-23 19:16:52

标签: javascript flash

使用JS嵌入flash的好处就是我的知识:

  • 查询navigator对象并查看安装了哪些Flash版本的功能,可能会分支出来并根据此提供不同的内容
  • 附加Flash的一致方法,因为脚本保留了标记,通常您只需要指定srcflashvars,尺寸
  • 依靠帮助程序实用程序嵌入swf来节省时间而不用担心错综复杂的细节
  • 如果每个站点嵌入多个对象,则能够提供一致的回退。

缺点:

  • 没有闪存但启用了JS的设备将完全失败
  • 人们变得懒惰而且不提供后备内容
  • 如果需要跨浏览器兼容,
  • 代码就是一团糟。常见的嵌入有各种各样的错误(甚至是youtube的),“最好的”跨浏览器似乎是按照this在对象中嵌套对象。我意识到,我可以使用服务器端方法并定义嵌入代码一次并在一个区域中进行更改,但这使得它无法在CMS textareas中嵌入/使用。

优点似乎超过了缺点。我在移动内容方面做得不够,无法获得准确的意见。任何人都可以想到原因/为什么不这样做?

3 个答案:

答案 0 :(得分:3)

缺点:

  1. 没有闪存但启用了JS的设备 将完全失败

    正如@Lars在他的评论中指出的那样,我认为通过JS检测Flash是一种为不同平台(操作系统,浏览器,Flash Player版本)注入不同内容(swf)的一种安全方法。同时禁用Flash和JS的设备是所有地狱可能会破坏的设备,但这只是一个非常小的百分比。我想不出一个容易的方法来规避这一点。

  2. 人们变得懒惰,不提供 后备内容。

    这显然是非常主观的。我使用SwfObject的经验很少但在我的情况下,当我们检测到NO FLASH情况时,我们回到了一个基于HTML DOM的纯解决方案,使用大量的JS来模拟模块。我的观点是,使用SwfObject,提供替代内容非常容易,我不明白为什么任何优秀的开发人员都不会这样做。

  3. 如果需要,代码就是一团糟 跨浏览器兼容。有 各种常见嵌入的bug( 甚至youtube的)和“最好的” 跨浏览器似乎是嵌套的 每个对象在一个对象中。一世 尽管如此,我可以使用一个 服务器端方法并定义 嵌入代码一次并将其更改为 一个区域,但这不是 可嵌入/可用于CMS textareas。

    我想我会在一定程度上同意这一点。不同的嵌入方法是一团糟。 StackOverflow上有这个主题讨论这个问题:Best way to embed flash in html

  4. 在某些情况下除了使用Flash之外别无选择:例如:具有上传百分比反馈的文件上传器(因为常规INPUT标签类型文件太过陈旧)。当然,有一种新的方法可以做upload progress bar using just javascript,但它不适用于你知道IE:)

    在这种情况下,没有办法摆脱Flash恕我直言。

答案 1 :(得分:2)

我没有看到放弃JS flash嵌入的充分理由。 SWFObject现在非常普遍(伪标准甚至!)和even Adobe recommends using it

它可以处理播放器版本要求,并允许用户轻松直接地更新Flash插件。

除了SWFObject之外,我认为能够使用客户端逻辑嵌入任何插件的内容将始终是要走的路;它提供了更多机会来阅读用户的环境,并提供适当的内容。

我认为可以说它在客户端添加了另一个要求来提供内容,但我认为绝大多数用户都会启用JS ...尤其是那些愿意使用Flash媒体的用户

希望有所帮助:)

答案 2 :(得分:1)

作为一个反问题:2011年有没有理由使用javascript嵌入方法?

我发现flash satay方法最适合跨浏览器,并遵循大多数DRY政策。

标记如下:

<object id="something" name="something" type="application/x-shockwave-flash" data="path/to/file.swf">
  <param name="movie" value="path/to/file.swf" />
  <param name="flashvars" value="query=string" />
  <!-- Backup content here -->
</object>

只要你不关心检查用户的flash版本(这篇文章中提供了解决方法),这种方法很有效。