首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 动画设计Flash教程

网页中嵌入flash的最佳方案

来源: 互联网    日期:2009-2-20
 
Flash Satay

另外还有个选择是Flash Satay方法,它用了传统的object方式,并且增加了额外的movie param来避免IE中不显示的bug。它还包括了一个容器flash来处理IE流加载bug。

<object type="application/x-shockwave-flash" »
data="c.swf? path=myContent.swf" width="300" height="120">
    <param name="movie" value="c.swf?path= »
myContent.swf" />
    <p>Alternative content</p>
</object>

虽然它很接近“理想的”object实现,但Flash Satay包含了一个使它的结构无法普适的权宜方案,并且它还不支持老Safari中的嵌套param。

DOM脚本的方案

在考虑纯标签方式的时候,也许你已经在想,为什么我们不用DOM脚本来替代呢。通过脚本,我们可以为每个浏览器提供所需的标签:

    * IE专用的object标签
    * 老版本的safari用的embed标签
    * 所有其他的浏览器用的普通object

DOM 脚本也具有足够灵活性来解决我们的其他问题:初始化的时候,我们可以用它来解决flash内容和播放器不匹配的问题。只需要对每个flash逐一检测插件 版本,并决定显示Flash还是显示替换内容。当需要的插件版本不足的时候,我们可以触发Adobe快速安装,一种可以在flash播放器内部下载安装控 件的简单机制。

DOM方案也让我们以动态写入的方式避免了点击激活机制。

用Javascript的时候要考虑的事情

因为不是每个人都是javascript专家——即使是专家,也没有必要重新去发明轮子——去用已有的javascript库嵌入flash是很明智的。让我们考虑一下选择一个值得信任的库所依据的原则。

写库的人通常都不考虑遵循标准,因为这些库要么在javascript里面生成flash内容,要么在开发工具里面帮你做这个工作,大多数库生产的都是不标准的代码,而且由于是动态生成的,W3C验证器也没法检查你的标签。

另外要考虑的是,当javascript被禁用,不支持,或者不被完全支持的时候,能否做到良好的退化。为了帮一小部分人提升用户体验而采用javascript,结果却弄得另一小部分人没法体验了,这样做的意义在哪里?

带着这些问题,我们来看看现在流行的库能做到多好。

Adobe Flash player detection kit

除了在flash IDE里面生成标签代码以外,Adobe还提供了Flash播放器侦测套件。使用这个套件有三种方法:

   1. 在flash8 IDE中勾上检测flash版本的多选框(在文件>发布设置>HTML)。
   2. 下载侦测套件zip,然后手动加入。
   3. 用Flex Builder2发布,默认就带。

虽然侦测套件包含了我们想要的所有特性,像版本检测,快速安装,自动激活,但它仍然有改进的空间。如果考虑遵循标准的话,它就显然失败了:它仍 然基于两次烹调法,所以它要么生成微软的独门object,要么生成通用的不标准embed。它也支持替换内容但是以一种古怪的不统一的方式。你需要两次定义你的替换内容:在javascript里和在一个noscript标签里。然而一方面Flash IDE和侦测套件把设置替换内容的工作流给你,另一方面Flex Builder 2却默认会把整个两次烹调代码贴在noscript标签里面,用以在不支持javascript或者禁用了javascript的时候显示flash。
总的来说,侦测套件在如何选择正确退化或者使flash内容对搜索引擎友好可访问这一点上,缺乏一种良好的策略和可以自圆其说的最佳方法。而且如果你需要自定义的话,它也并不是最简单的解决方法。

UFO和SWFObject

流行的开源替代品,例如我的UFO和Geoff Stearns的SWFObject,则可能是现在最完整和易用的库了。

虽然他们表面上看起来很像,但是两个库在底层是非常不一样的。比如说,SWFObject使用Adobe的两次烹调法,而UFO则生成了最标准的标 签。另一方面,他们都遵循了相同的构架原则:当所需的flash和javascript存在时,使用DOM脚本重写网页上的替换内容。

虽然他们都有对替换内容的支持,但是两个库都有一个共同的弱点,他们依赖javascript去插入flash,所以一小撮只有flash插件而没有javascript支持的用户就只能看见替换内容。

低调的DOM脚本

为了解决退化问题,使用一种低调脚本的嵌入方法会比较有效:这种混合方法使用Flash Satay那样的标准标签来嵌入Flash内容和替换内容,同时并不太显眼地调用DOM脚本,作为一种扩展来为浏览器解决问题和增加功能。

ObjectSwap就是基于这样的原则,并且我认为将会是未来flash嵌入库的榜样架构。不幸的是,ObjectSwap注意力主要集中在解决自动激活上,所以在解决版本检测和诸如IE上的流bug和老Safari的param bug这样的标签支持问题上,就没有多大作用。另一个可以提高的地方在于——所有低调库都应该加以注意的是——性能。使用onload事件的话,你的 DOM相关代码只会在你整个页面,包括页面上的元素都加载完成后才执行。用DOMContentLoade事件来代替会更好,那就会在DOM加载完后立即触发。但是DOMContentLoade并没有被所有浏览器支持,你也许可以用这个方案代替。

flash嵌入的未来

虽然完美的方案也许还没有被写出来,但我确实觉得我们已经在正确的方向上走了很远。如果我们把不同库的好特性组合在一起,我们应该能够实现我们在文章开头定义的那些原则。为了研究这样的解决方案,Geoff Stearns和我已经共同工作,我们正在努力写一个新的标准的并且低调的解决方案,而不是重写UFO和SWFObject。它会最终替代这两个库。合作的成果是 SWFFix项目,现在是alpha阶段。[2]

动作快点,软件老大们!

虽然web开发者可以想出创新的变通方案来,但是只有浏览器和插件厂商可以做出真正实质性的进步。改掉那些明显的bug,采用支持web标准和替换内容的嵌入方法,他们可以让开发者得以用正确的方式来进行日常工作。所以软件老大们,觉得如何?

by Kevin Cornell

译注:

[1]微软新的补丁已经在浏览器中取消了这个特性。

[2]UFO和swfobject1.5的升级替代品目前是swfobject2.0,实际使用的html是上面讲的条件注释方式。



文章共4页:  [1] [2] [3] [4]


更多的网页中嵌入flash的最佳方案请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2009-2-20   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报