网页中的flash加载资源时的路径相对于谁?
2009-10-28 17:22
423 查看
在项目中出现了一个问题,一个flash播放器支持两种播放方式,flv路径直接播放和xml播放列表式播放。
将swf、flv、播放列表放在同一文件夹A,swf直接以文件名称来访问flv和播放列表,然后嵌入播放的网页放在flv路径和xml播放列表文件的上层文件夹B中,结果使用flv路径的能正常播放,而使用播放列表的却无法播放。最后发现,播放时网页向服务器发送的get信息中flv路径(A/***.flv)是正确的相对于网页的路径,而播放列表的get消息中的路径(***.xml)却是相对于html网页的,也就是直接就是名称。
原因不详,日后有空再研究,解决办法嘛,在swf中加载任何资源都将其扩展成绝对路径。
11月11日追:
(今天又在某处看到了以下资料,不过这种解决方案要求使用者去解决此问题, 而不是flash的提供者去解决,虽然麻烦一点,我还是喜欢上面的解决方案)
有載入外部資源的都知道,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>
将swf、flv、播放列表放在同一文件夹A,swf直接以文件名称来访问flv和播放列表,然后嵌入播放的网页放在flv路径和xml播放列表文件的上层文件夹B中,结果使用flv路径的能正常播放,而使用播放列表的却无法播放。最后发现,播放时网页向服务器发送的get信息中flv路径(A/***.flv)是正确的相对于网页的路径,而播放列表的get消息中的路径(***.xml)却是相对于html网页的,也就是直接就是名称。
原因不详,日后有空再研究,解决办法嘛,在swf中加载任何资源都将其扩展成绝对路径。
11月11日追:
(今天又在某处看到了以下资料,不过这种解决方案要求使用者去解决此问题, 而不是flash的提供者去解决,虽然麻烦一点,我还是喜欢上面的解决方案)
有載入外部資源的都知道,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>
相关文章推荐
- 网页中的flash加载资源时的路径相对于谁?
- web页面加载flash文件相对路径问题
- WPF下使用Uri加载相对路径资源
- 网页、JS、CSS和Flash中的相对路径
- 资源加载 - 相对路径获取JAVA配置文件
- 文件的相对路径和绝对路径,加载资源文件失败
- 处理Flash加载的相对路径
- 网页中引用flash,flash引用xml路径问题
- 关于Silverlight资源文件(如:图片)的放置位置及其引用(相对路径)
- IOS开发(7)WKWebView加载本地HTML、CSS、JS文件JS(解决html内访问其他资源路径问题)
- 网页资源加载动画
- WPF后台加载文件的相对路径和绝对路径记载
- 加载web应用资源文件路径
- java 资源文件加载路径
- 根据资源路径加载ZIP压缩包中指定的资源
- spring-boot 加载本地静态资源文件路径配置
- Handlebars Paths Handlebars 路径处理 相当于html等静态资源引用的相对路径
- 常用Flash网页设计资源列表
- ClassLoader加载资源时的搜索路径
- 拼装网页的相对路径