• 网页中的flash加载资源时的路径相对于谁?


    在项目中出现了一个问题,一个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>
  • 相关阅读:
    请问发表的文章如何备份?
    .NET中利用XML来自动生成代码策略
    XPO使用随笔
    为方便做封包分析,做了个十六进制和字符互转的网页小工具
    前端人员如何模拟慢网速环境
    补充《动态加载外部.js文件时候,javascript的执行顺序问题》
    凡客诚品官方网站的前端改进建议
    "Cachecontrol”常见的取值private、nocache、maxage、mustrevalidate及其用意
    javascript跨域操作cookie的点滴记录
    HTTPS的七个误解(译文转载)
  • 原文地址:https://www.cnblogs.com/k1988/p/2165709.html
Copyright © 2020-2023  润新知