用于嵌入 Flash 的自定义控件





4.00/5 (4投票s)
在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")]
此外,我们需要提供以下属性:Width
,Height
,WMode
(Windowed
,Opaque
,Transparent
)和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,并已更正。