`
crazier9527
  • 浏览: 1014353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网页中嵌入Flash的几种方法(消除IE控件激活虚线)

阅读更多

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

 

一、传统的方法

 

XML/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>   
 

这方法是使用 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 上,后来又经过了几次完善:

 

XML/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>   
 

这方法没 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 页面头部<head>区嵌入这个脚本文件:

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

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

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

使用脚本替换这个内容:

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

 

 

来源:蓝色理想  作者:old9

经典论坛讨论: http://bbs.blueidea.com/thread-2699979-1-2.html

 

 

附白冰(blog.goupwing.com)自己的方法:

 

只是为了消除 IE 里恼人的控件激活虚线框,没必要太过关注标准与不标准,或是产品设计、用户体验等等,毕竟真正上网的人不装 Flash 播放器和禁止 Script 的人少之又少。一切从精简代码,浏览器兼容出发,所以我还是选择采用 embed 的方法,用 js 嵌入。如果不在 swf  文件里传递参数的话,貌视不错的,呵呵。。。

 

PS:虽然现在 Adobe Dreamweaver CS3 中也采用 js 和 object 并列判断插入,可惜代码冗长。

 

1、创建一个外部文件 JS 函数;

JavaScript代码
<script type="text/javascript">   
  
   function C_flashs(url,width,height,transparent) {   
   // Clear active line of the flashs for IE   
     var param_t='';   
     if (transparent!=0) {   
        param_t='wmode="transparent"';   
     }   
     document.write('<embed src="'+url+'" quality="high" menu="false" '+param_t+' pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="'+width+'" height="'+height+'"></embed>');   
   }   
  
</script>   
 

2、在需要的地方,调用 JS 函数;

<script type="text/javascript">C_flashs('http://goupwing.com/flashs/banner.swf',1000,200,0);</script>

资料引用:http://www.knowsky.com/532468.html

分享到:
评论

相关推荐

    网页中嵌入Flash播放器

    本主题将深入探讨“网页中嵌入Flash播放器”的相关知识点。 首先,我们来理解什么是Flash。Adobe Flash是一种矢量图形和多媒体平台,它允许开发人员创建交互式富媒体内容,包括游戏、动画和应用程序,这些内容可以...

    IE控件一些高级使用方法

    在IT领域,尤其是在Windows应用程序开发中,Internet Explorer (IE) 控件是一个常用组件,它允许开发者在他们的应用程序中嵌入Web浏览器的功能。本篇将详细探讨IE控件的一些高级使用方法,这些方法主要来源于VC++的...

    flash批量上传控件(可直接嵌入网页)

    一个非常优秀的flash批量上传文件的控件,可以直接嵌入在网页中使用

    使用IE控件的一些有趣方法.zip_IE控件

    在IT领域,IE控件(Internet Explorer Control)是一种常见的组件,它允许开发人员在应用程序中嵌入Web浏览器的功能。这个“使用IE控件的一些有趣方法.zip_IE控件”压缩包可能包含了一些关于如何创造性地利用IE控件...

    网页中flash免激活嵌入脚本

    相信有很多人在网页中嵌入FLASH后,在网页中打开时需要点击激活才能播放,那么您可以使用我上传的此款FLASH脚本,可以完美的解决你遇到的问题! 使用方法: 1.首先在头里引用此脚本,如:&lt;head&gt;&lt;script src="/js/...

    Active控件界面嵌入网页显示

    通过这篇文章,我们可以了解如何使用ActiveX控件在网页中嵌入界面,并学习一些相关的技术。 首先,我们需要了解什么是ActiveX控件。ActiveX控件是一种小型的软件组件,能够在Web浏览器中运行,并提供了丰富的交互...

    在wpf中嵌入flash

    在Windows Presentation Foundation (WPF) 中嵌入Flash技术,主要是为了让WPF应用程序能够展示和交互与Adobe Flash内容。这项技术对于开发跨平台、富媒体应用非常有用,因为Flash在过去的互联网环境中广泛用于动画、...

    web页面嵌入excel控件,网页中在线编辑EXCEL表格实例

    在网页中嵌入Excel控件是一项实用的技术,它允许用户在网页环境中直接编辑和操作Excel表格,无需安装完整的Microsoft Office套件。这种技术基于Office Web Components(OWC),这是一个由微软开发的组件集,用于在...

    IE DELPHI 控件

    这个控件是基于Internet Explorer(IE)的ActiveX组件,允许开发者在Delphi应用中嵌入完整的IE浏览器引擎,从而实现与网页交互、展示网页内容、执行JavaScript等IE浏览器的所有功能。 首先,我们来详细了解一下这个...

    c#.netweb页面嵌入excel控件,网页中在线编辑EXCEL表格实例

    本实例以"C#.NET Web页面嵌入Excel控件,网页中在线编辑EXCEL表格"为主题,详细讲解这一技术的实现方法和关键知识点。 首先,我们要理解的是,为了在Web页面上显示和编辑Excel,我们需要一个能够处理Excel文件的...

    IE 控件一些高级使用方法htmldlg.rar_IE_IE控件_htmlDlg

    在IT领域,尤其是在Windows应用程序开发中,IE控件(Internet Explorer Control)是一个常见的组件,它允许开发者在桌面应用中嵌入网页浏览功能。这个压缩包"IE 控件一些高级使用方法htmldlg.rar"显然是针对IE控件的...

    FLASH控件,.net flash控件,winform flash播放控件,

    标题中的“FLASH控件”指的是在软件开发中用于在Windows应用程序中嵌入和播放Adobe Flash内容的组件。在.NET框架下,开发人员可以利用这样的控件在WinForms应用中集成Flash动画、视频或其他互动内容。这里提到的...

    解决vb中ie控件失效的办法

    这些变化可能与VB6中使用的IE控件(通常是MSComCtrl.ocx或SHDocVw.dll)的旧版接口不兼容,导致控件在新版本的IE中运行异常。 解决VB中IE控件失效的方法主要有以下几步: 1. **注册表调整**:问题的核心在于注册表...

    vb.net中加入Flash控件(Flash.ocx)及示例

    在VB.NET中实现这一目标,可以借助ActiveX控件,特别是Flash.ocx,这是一个允许VB.NET应用程序嵌入和控制Flash内容的组件。在本教程中,我们将讨论如何在VB.NET中添加和使用Flash.ocx控件,并通过一个示例进行说明。...

    网页中嵌入swf文件的几种方法

    ### 网页中嵌入SWF文件的几种方法 #### 一、`object`与`embed`结合方式 此方法结合了`object`与`embed`两种标签的优势,是Macromedia一直推荐的一种方式。 **优点:** - 兼容性好,几乎可以在所有浏览器上运行。...

    ASP.NET网页中嵌入Flash动画的代码

    ### ASP.NET网页中嵌入Flash动画的技术解析 随着互联网技术的发展和用户对网站体验要求的提高,越来越多的开发者希望通过在ASP.NET网页中嵌入Flash动画来提升网站的吸引力和交互性。本文将详细介绍如何在ASP.NET...

    HTML嵌入Flash Media Playback控件

    HTML嵌入Flash Media Playback控件是一种常见的技术,用于在网页中播放流媒体内容。Flash Media Server(FMS)是Adobe提供的一个服务器平台,专门用于处理流式传输的多媒体数据,如视频和音频。通过在HTML页面中嵌入...

    Winform测试WebBrowser控件对应的IE版本

    测试WebBrowser控件对应IE版本的方法主要有两种: 1. **代码检测**:在C#代码中,可以使用以下代码片段来检查WebBrowser控件的版本: ```csharp webBrowser1.ObjectForScripting = new ScriptingObject(); (...

    IE浏览器去掉FLASH虚线框的两种方法.rar

    这两种方法都能有效地解决IE浏览器中的Flash虚线边框问题。第一种方法适用于对HTML和CSS有一定了解的开发者,通过修改Flash插入代码实现;第二种方法则利用JavaScript,提供了一种动态解决方案,适应性更强。在实际...

    网页中嵌入windows media player示例

    在网页设计中,有时我们需要将音频或视频内容嵌入到页面中,以便用户可以直接在浏览器中播放。Windows Media Player(WMP)是一款经典的媒体播放器,它也可以被嵌入到HTML网页中,为用户提供流媒体内容的播放服务。...

Global site tag (gtag.js) - Google Analytics