http://wenda.tianya.cn/wenda/thread?tid=2ae4206d4e7a6d43

一、传统的方法
[codes=html]<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"   width="550" height="400" id="Untitled-1" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="mymovie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="mymovie.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="mymovie" align="middle" allowScriptAccess="sameDomain"  type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>[/codes]
  这方法是使用 object 和 embed 标签来嵌入,细心的会发现,object 的很多参数和 embed 里面的很多属性是重复的,为什么这样做?为了浏览器兼容性,有的浏览器支持 object,有的支持 embed,这也是为什么要修改 Flash 的参数时两个地方都要改的原因。这种方法是 Macromedia 一直以来的官方方法,最大限度的保证了 Flash 的功能,没有兼容性问题。但是它现在不那么好用了:

  无法通过验证,由于为了兼容性而嵌入的 embed 标签是不符合 W3C 的规范的。当然,如果你不在乎什么规范不规范,另当别论。

  微软由于种种原因,在 sp2 后限制了 IE 的 ActiveX 的使用模式,就是在页面中的 ActiveX 有一个虚框,需要用户点击一次才能正常交互。Flash是作为一个 ActiveX 嵌入到网页中的,所以它也会受牵连,只有通过 JS 嵌入 Flash 才能解决这个问题。

  没有 Flash 版本检测,如果版本浏览器的flash插件版本不够,或者不能正常显示你的 swf 文件,或者会弹出一个 ActiveX 的确认安装的框——这个框对很多用户来说是很恐怖的。

二、只用 object 的方法

  这种方法的名字叫做 Flash satay,最早是2002年由 Drew McLellan 发表在 A List Apart 上,后来又经过了几次完善:
[codes=html]
  <object type="application/x-shockwave-flash data="c.swf?path=movie.swf" width="400" height="300">
  <param name="movie"  value="c.swf?path=movie.swf" />
 <img src="noflash.gif" width="200" height="100" alt="" />
  </object>
[/codes]
  这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:

  需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。

同上面第二点,ActiveX的虚框问题。

继续同上没有版本检测

还是有少数用户代理(比如一些版本的 safari 和一些屏幕阅读器)不认这种方式,有 bug。

三、用JS嵌入的方法

  用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,⒒?JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。
  我知道的比较常见的 JS 嵌入方法有以下几个

SWFObject

UFO - Unobtrusive Flash Objects

Macomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。

我 SWFObject 用的比较多,就挑它来说一些这种方法的优点:

IE中没有讨厌的虚框问题了。

提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。

易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。

可以通过验证——当然这个不是重点,只是顺带效果罢了。

四、我的结论

  现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。
但它在保证 Flash 功能的前提下还利用 JS 提供了额外的好处,再者又已经有人写了很完善的嵌入脚本可以方面地下载使用(推荐 SWFObject),我们还有什么理由不用它呢?

  SWFObject 那网页是英文的,这里写个简单的用法教程:

  下载它的.js文件,在这里: http://blog.deconcept.com/swfobject/swfobject1-4.zip (如果链接失效可能是版本有更新,请用上面给出的地址去主页下载最新版本)

  在你的 HTML 页面头部区嵌入这个脚本文件:

  <script type="text/javascript" src="swfobject.js"></script>

  在你的 HTML 中写一个用来放 Flash 的容器,比如,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。

<div id="flashcontent">
  这里放替换内容,用来在 Flash 无法显示时显示。
  </div>

使用脚本替换这个内容:
[codes=JScript]
 <script type="text/javascript">
   var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");
  //参数意思: 地址,Flash 的 id(不是容器的 id),宽,高,版本需求,背景颜色
  //这是最基本的,如果你要高级的设置,就仔细翻翻说明吧。
   so.write("flashcontent");
 </script>
[/codes]
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。

网页如何调用flash的方法相关推荐

  1. 在网页中插入flash的方法

    1.推荐  jQuery插件---SWFObject   (jQuery-SWFObject-1.1.1.js) ps:下面一段摘抄自:http://levi.cg.am/archives/403 如 ...

  2. 网页中嵌入Flash的方法讨论

    Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...

  3. 网页中嵌入Flash的方法

    Flash 嵌入的问题论坛中有人问了好多次,到底应该怎么用,为什么通不过验证,要通过验证怎么办等等等. 讨论中也出现了不少的误解,所以我单开一个帖总结一下我所知道的东西,不想看我罗嗦的直接跳到最后看结 ...

  4. 网页中嵌入 Flash 的方法 满足W3C

    < DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> ...

  5. 如何查看网页操作中调用的js方法

    ​比如点击网页中的某个按钮时,如何知道调用了哪个js方法. 首先打开谷歌浏览器,按f12进开发者模式,然后点击source选项卡. ​找到event listener breakpoints,选择相应 ...

  6. 网页中嵌入flash的最佳方案

    http://solomon.athost.net/?p=549 网页中嵌入flash的最佳方案 各种浏览器差异悬殊,开发者应如何在网页中嵌入flash才是最佳方案?本文介绍的原理亦被应用在swfob ...

  7. uniapp调用wx.scanQRCode()方法,安卓手机正常,苹果手机异常的问题

    场景:使用uniapp开发微信公众号网页,调用wx.scanQRCode()方法实现扫码功能,出现安卓手机正常扫码,苹果手机无法扫码,需要手动刷新页面后才可以扫码的问题. 点击菜单跳转路由的逻辑代码, ...

  8. javascript调用Flash里对象的方法(函数)搞了五个小时。

    搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...

  9. iPhone iPad 如何播放网页调用Flash视频

    safari浏览器是用html5调用,具体方法为:<video tabindex="0" source="http://XX" controls loop ...

最新文章

  1. 跟随美国博导 12 年,我学到最深刻的不是科研,而是……
  2. 给你一个团队怎么带?抓住3要点,别做13件事,没人敢不服你
  3. select、poll、epoll之间的区别总结[整理]
  4. 上周热点回顾(10.1-10.7)
  5. DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略
  6. 四个标志位SF,ZF,OF,CF
  7. k8s强制删除一直处于terminating状态的pod
  8. QT自定义MainWindow
  9. Android上试用Linphone(Free SIP VOIP Client)
  10. jQuery attributes(上)
  11. Location 对象操作 URL 使用详解
  12. 专题:手把手学习硬件基础之手册阅读------LDOAMS117
  13. 农村三资管理平台app_鑫农三资app下载-鑫农三资app下载安卓版 v1.0.2_手机乐园
  14. Windows 10虚拟机Vmware 安装 黑苹果macos10.14
  15. FPS透视自瞄辅助-游戏漏洞及原理
  16. 鸿蒙OS开源代码精要解读之——init
  17. cad渐开线齿轮轮廓绘制_CAD渐开线齿轮怎么画?
  18. spry提示信息设置html,CSS教程:12.4 借助于Spry实现折叠面板
  19. Spring MVC 如何上传多个文件到指定位置
  20. 文档集数据处理 gensim corpora.Dictionary

热门文章

  1. python rbf神经网络_原创,基于径向基函数(RBF)神经网络RBF网络的举例应用!
  2. matlab中if语句的用法_Excel中最常用的逻辑函数IF用法介绍
  3. The 2014 ACM-ICPC Asia Mudanjiang Regional First Round J
  4. hdu3460 字典树(打印机)
  5. 【Java 并发编程】线程池机制 ( 线程池示例 | newCachedThreadPool | newFixedThreadPool | newSingleThreadExecutor )
  6. 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板 ( 2021年08月28日最新解决方案 )
  7. 【错误记录】360 加固后的运行错误 ( 加固 SO 动态库时不能对第三方动态库进行加固 )
  8. 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★
  9. 【计算机网络】网络安全 : 公钥分配 ( 公钥使用者 | 公钥分配 | CA 证书格式 | CA 证书吊销 )
  10. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )