博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
阅读量:5265 次
发布时间:2019-06-14

本文共 1895 字,大约阅读时间需要 6 分钟。

首先IE只支持对Object的解析。

火狐,谷歌,Safari只支持对Embed的解析。

一、传统的方法这方法是使用 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 上,后来又经过了几次完善:这方法没 embed 了,可以通过验证,是标准的嵌入 Flash 的方法,浏览器兼容性也不错,看起来几乎完美,不过还是有问题的:需要一个 holder swf 来加载你的目标 swf 以保证 IE 中的 stream 能力,如果你需要通过 flashvars 来传参,或者和页面的 JS 交互,会很麻烦。同上面第二点,ActiveX的虚框问题。继续同上没有版本检测还是有少数用户代理(比如一些版本的 safari 和一些屏幕阅读器)不认这种方式,有 bug。三、用JS嵌入的方法用JS嵌入就是各有各的嵌入方法了,有嵌得好的有嵌得不好的。有人用 document.write 直接写,这法子说实话不大好,感觉 hack 成分多了,有点为了验证而验证的意思,而且没有体现出什么 JS 的优势。我觉得一个好的 JS 嵌入脚本,在保证 Flash 应有功能的基础上,⒒?JS 的优势应该要有版本检测,要能很好解决可访问性问题(也就是用户在无法浏览 Flash 内容或禁用 JS 的时候应该如何处理的问题),要易于重复使用。我知道的比较常见的 JS 嵌入方法有以下几个SWFObjectUFO - Unobtrusive Flash ObjectsMacomedia(现在是Adobe了..)提供的脚本[这里]和[这里]。我 SWFObject 用的比较多,就挑它来说一些这种方法的优点:IE中没有讨厌的虚框问题了。提供了完善的版本检测功能,如果版本不够则显示其他东西,比如图片或文字。易于使用,只要在页面头加载一个 .js 文件,然后 HTML 写一个容器,里面放普通的文本或图片(用于无法显示 Flash 时显示),最后用脚本来替换这个元素里面的内容为 Flash。可以通过验证——当然这个不是重点,只是顺带效果罢了。四、我的结论现阶段用 JS 嵌入 Flash 是最完美的方法,虽然这法子这也是由于浏览器的种种问题而作出的妥协。但它在保证 Flash 功能的前提下还利用 JS 提供了额外的好处,再者又已经有人写了很完善的嵌入脚本可以方面地下载使用(推荐 SWFObject),我们还有什么理由不用它呢?SWFObject 那网页是英文的,这里写个简单的用法教程:下载它的.js文件,在这里:  (如果链接失效可能是版本有更新,请用上面给出的地址去主页下载最新版本)在你的 HTML 页面头部区嵌入这个脚本文件:在你的 HTML 中写一个用来放 Flash 的容器,比如
,并随便给一个 id 比如 flashcontent。然后在里面放上你的替换内容。
这里放替换内容,用来在 Flash 无法显示时显示。
使用脚本替换这个内容:
这脚本可以写在 HTML 中也可以写在外部 .js 文件中。OK

转载于:https://www.cnblogs.com/newsouls/archive/2011/10/11/2207578.html

你可能感兴趣的文章
迭代器和生成器(难点)
查看>>
内存分为的5大区
查看>>
5. Docker - 仓库管理
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
CS61A Efficiency 笔记
查看>>
197. 上升的温度
查看>>
ArcGIS Server Javascript 多图对比功能
查看>>
Notepad++使用教程
查看>>
中缀表达式转后缀表达式
查看>>
第六次实训作业异常处理
查看>>
c#实现把异常写入日志示例(异常日志)
查看>>
【Selenium-WebDriver问题点】chromeDriver和chrome浏览器版本之间的兼容性问题
查看>>
Delphi采用接口实现DLL调用
查看>>
苹果充电器USB端的识别电阻的设置
查看>>
radio的取值
查看>>
iterm2 恢复默认设置
查看>>
Django 框架中定时触发脚本
查看>>
响应式布局
查看>>
从此以后,我不再使用百度空间了。
查看>>
LintCode 字符串(二)
查看>>