读书人

bcastr4.0 在ASP.NET中为什么可以在IE

发布时间: 2012-12-15 15:16:03 作者: rapoo

bcastr4.0 在ASP.NET中为什么可以在IE7、IE8、FF、遨游、谷歌下正常显示,但是在IE9中一片空白
这几天要用图片新闻,觉得bcastr4.0很好,所以使用了,在IE7-9,FF,谷歌,遨游,均测试通过,都是用HTML测试的,测试代码如下:


<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test</title>
</head>
<body>
<div>

<object type="application/x-shockwave-flash" data="bcastr4.swf?xml=bcastr.xml" width="600" height="300" id="vcastr3">
<param name="movie" value="bcastr4.swf?xml=bcastr.xml" />
</object>
</div>
</body>
</html>

显示非常正常,但是放入ASPX,IE9下无法显示,一片空白,急人,代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="bcastr.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>

<object type="application/x-shockwave-flash" data="bcastr4.swf?xml=bcastr.xml" width="600" height="300" id="vcastr3">
<param name="movie" value="bcastr4.swf?xml=bcastr.xml" />
</object>
</div>
</body>
</html>

然后想到了替代方案,使用IFRAME签入先前的HTML,一样空白

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="bcastr.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test</title>
</head>
<body>
<div>
<iframe src=bcastr4.html></iframe>
</div>
</body>
</html>

最后采用了这样的方式

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="bcastr.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head id="Head1" runat="server">
<title>test</title>
</head>
<body>
<div>
<iframe src=bcastr4.html></iframe>
<object type="application/x-shockwave-flash" data="bcastr4.swf?xml=bcastr.xml" width="600" height="300" id="vcastr3">
<param name="movie" value="bcastr4.swf?xml=bcastr.xml" />
</object>
</div>
</body>
</html>


依然一片空白,但是放入上述几种方案在FF ,谷歌, 遨游 ,IE7-8均正常显示,IE9空白,附上bcastr4.0下载链接http://xiaogui.org/bcastr-open-source-flash-image-silde-show.html
[最优解释]
classid不是必须的,指定 <object type="application/x-shockwave-flash" 应该就可以
你的浏览器没有安装最新版本的flash播放器插件吧


[其他解释]
自己解决了,原来IE9需要classid属性,否则不加载FLASH,而FLASH的classid为d27cdb6e-ae6d-11cf-96b8-444553540000
原页面改为


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="bcastr.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head id="Head1" runat="server">
<title>test</title>
</head>
<body>
<div>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
width="300" height="150">
<param name="movie" value="bcastr4.swf?xml=bcastr.xml" />
</object>
</div>
</body>
</html>


后,IE9可以显示正常,但是同时发现FF、Chrome失效,产生了新的问题,继续研究发现,加上CLASSID后,还得加上另外属性

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="bcastr.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head id="Head1" runat="server">
<title>test</title>
</head>
<body>
<div>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
width="300" height="150">
<param name="movie" value="bcastr4.swf?xml=bcastr.xml" />
<embed src="bcastr4.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="300" height="150"></embed>
</object>
</div>
</body>
</html>


至此,终于全部兼容了,测试范围IE6-9,FF,Chrome、遨游
[其他解释]
引用:
classid不是必须的,指定 <object type="application/x-shockwave-flash" 应该就可以
你的浏览器没有安装最新版本的flash播放器插件吧
就是怕不是最新版,昨晚去官网下的从新安装,貌似不行
[其他解释]
引用:
classid不是必须的,指定 <object type="application/x-shockwave-flash" 应该就可以
你的浏览器没有安装最新版本的flash播放器插件吧

这样写如果是HTML的话是可以的,IE9正常显示,但是ASP.NET下,也就是前面写的放入ASPX,就会空白

读书人网 >.NET

热点推荐