65.9K
CodeProject 正在变化。 阅读更多。
Home

用于嵌入 Flash 的自定义控件

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (4投票s)

2007年12月26日

CPOL

2分钟阅读

viewsIcon

39742

downloadIcon

648

在IE中嵌入Flash到页面,无需“点击以激活并使用此控件”。

引言

在某些新版本的Internet Explorer中,Flash动画需要点击才能激活。这令人沮丧,尤其是在Flash是页面设计的一部分时。但是,有一些解决方案可以解决这个问题。换句话说,我们需要为IE编写一些代码,而为Opera、Firefox、Safari和其他常用的浏览器编写不同的代码。一个ASP.NET自定义控件可以实现这一点。

使用代码

只需将此控件添加到您的工具栏,就完成了。在页面上拖放,选择一个SWF文件进行嵌入。

关注点

让我们考虑一下细节。首先,我们需要知道浏览器。没问题:Page.Request.Browser.Browser将返回浏览器名称。所以,现在,我们知道哪个浏览器请求了我们的页面。下一步是为浏览器渲染正确的HTML。主要思想是从外部JavaScript文件中的某个容器(此实现中的div)中编写一个Flash <object>节点。但是,携带一个JavaScript文件与我们的自定义控件一起使用并不是很好。所以,我们将在DLL中嵌入JavaScript。这是我们的JavaScript

function ActivateFlash(id,content)
{
    document.getElementById(id).innerHTML = content;
}

相当简单...但我们不能在同一页面上编写它,把它放在一个外部JavaScript资源中很重要。所以,我们有这个文件:activate.js

要将它嵌入到我们的程序集中,我们需要将构建操作更改为“嵌入的资源”,并将此行添加到AssemblyInfo.cs

[assembly: System.Web.UI.WebResource("EmbedFlash.activate.js",
 "application/x-javascript")]

此外,我们需要提供以下属性:WidthHeightWModeWindowedOpaqueTransparent)和Flash文件URL(SWFURL)。但这很简单。

另一件有趣的事情是,我们可能希望在设计模式下浏览SWF文件。为此,我们需要将以下属性添加到我们的SWFURL属性中

[EditorAttribute(typeof(System.Web.UI.Design.UrlEditor), typeof(UITypeEditor))]

它告诉设计器将UrlEditor类用作此属性的UITypeEditor

更多信息可以在源代码中找到。

历史

本文最初发布于ASP.NET Cafe: 技巧和窍门,然后稍作修改后发布在CodeProject上。Flash嵌入已在IE 6和7、FireFox、Opera和Safari中进行了测试。

  • 1月5日...我在这里发现了一个丑陋的bug,并已更正。
© . All rights reserved.