网页中引用flash,flash引用xml路径问题

之前解决方案一直都是在flash里面得到swf路径然后凑成绝对路径来做的,今天在网上看到这个参数,很实用.以下内容来自

有載入外部資源的都知道,Flash相對路徑是根據它所在HTML而不是Flash自己本身,例如網頁http://luar.com.hk/test.html有一個http://luar.com.hk/swf/test.swf,這個Flash以相對路徑載入test.xml,Flash Player載入http://luar.com.hk/test.xml而不是http://luar.com.hk/swf/test.xml。因為這種特性,往往發生很多發佈上問題。開發人員明明在本地測試妥當,所有相關files連同swf都放在同一個folder裡面,到交付客戶時,卻出現問題,因為別人可能喜歡將整個東西放在一個subfolder下,在HTML嵌入Flash時,Flash和本身HTML根本不在同一個folder下,結果出現找不到外部資源問題。

其實HTML發佈Flash的參數有一個叫base,可以指示Flash相對路徑由那裡開始,只要設定base=".",就可以跟著Flash路徑走。

平常例子:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000〃
width="500〃
height="300〃
codebase="http://active.macromedia.com/flash7/cabs/swflash.cab#version=9,0,0,0">
<param name="base" value="."></param>
<param name="movie" value="swf/test.swf"></param>
<param name="play" value="true"></param>
<embed base="." src="swf/test.swf"
width="500" height="300" play="true"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed></object>
用SWFObject例子;

var swfobj = new SWFObject(value, "swf/test.swf", 500, 300, "9.0.0.0", "#FFFFFF");
swfobj.addParam("base", ".");
swfobj.write("swfDiv");
用Adobe自帶Publish的AC_RunActiveContent.js例子;

AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
'base', '.',
'width', '500',
'height', '300',
'src', 'test',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', 'test',
'bgcolor', '#ffffff',
'name', 'test',
'menu', 'true',
'movie', 'swf/test',
'salign', ''
);

因为Dreamwaver每次插入动画flash的时候,系统总是自动加载并插入一大段代码并生成AC_RunActiveContent.js的文件。为了简化其的代码,所以自行把代码重新整理了一下,使其每次插入动画的时候,只需要写入短短一行代码(例如:<script type="text/javascript">swf(455,200,'仿新浪焦点图','focus');</script>),就可以达到跟Adobe官方同样的效果。已经测试过了,兼容所有浏览器。如果有些浏览器显示不出来,可能因为动画的版本和浏览器支持的flash动画版本不一致所致。 对比:原来插入一个flash的代码。 <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script> <script type="text/javascript"> AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','title','仿新浪焦点图','name','仿新浪焦点图','width','455','height','200','id','仿新浪焦点图','src','focus','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','focus' ); //end AC code </script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" title="仿新浪焦点图" name="仿新浪焦点图" width="455" height="200" id="仿新浪焦点图"> <param name="movie" value="focus.swf" /> <param name="quality" value="high" /> <embed src="focus.swf" width="455" height="200" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="仿新浪焦点图"></embed> </object></noscript> 而现在只需要写<script src="swf.js" type="text/javascript"></script><script type="text/javascript">swf(455,200,'仿新浪焦点图','focus');</script>就可以达到同样的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值