【问题标题】:swfobject detect swfurl status 404swfobject 检测 swfurl 状态 404
【发布时间】:2016-03-06 20:49:56
【问题描述】:

我有以下代码,

var flashvars = {};
flashvars.src = "path-to-src";
flashvars.controlBarAutoHide = "false";
flashvars.poster = "path-to-thumbnail";
flashvars.autoPlay = "false";

var attributes = {};

var params = {};
params.wmode = "transparent";
params.allowfullscreen = "true";

var callbackfn = function(e){
//    console.log(e)
}

swfobject.embedSWF("http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf", "altContent", "800", "500", "10.2.0", "/path-to/expressInstall.swf", flashvars, params, attributes, callbackfn); 

上面代码中的 swfurl 即(http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf)给我 404 错误,因此视频无法播放

Qn:

  1. 有没有办法,如果 swfurl 是 404 那么我们可以用其他 url (path-to-self-domain-swf) 替换它

  2. 我也试过checking broken URL,但由于交叉 域策略它没有给我想要的 swfurl 状态结果

【问题讨论】:

    标签: javascript jquery flash http-status-code-404 swfobject


    【解决方案1】:

    SWFObject 没有任何检查 404 状态的特性或能力。实际上,只要将 SWF 的标记成功添加到页面,它就会报告嵌入成功。它不会验证 SWF 是否实际加载和播放。

    撇开 SWFObject 不谈,跨域客户端 404 检测实际上是不可能的。最常见的建议是使用 AJAX 尝试加载文件,但是在跨域时会失败。如果您在加载文件时检查错误,您将看不到有关错误的详细信息(404 与 403 或 500 等)。这种方法在页面加载时间和网络请求方面也很昂贵——您将尝试加载文件两次。

    我要做的——这是一个技巧——尝试像往常一样加载您的 SWF,但附加一个轮询 Flash Player 的计时器以确保文件正在实际加载。如果您在给定的时间范围内没有看到加载百分比的任何进展,则可以认为 SWF 不可用并且加载失败。

    例如(操作顺序):

    • 加载 SWF
    • 等待一两秒
    • 轮询 SWF 以检查 PercentLoaded 值
      • 如果值大于 0,则假定 SWF 可用。
      • 如果值仍然设置为“0”,请稍等片刻,看看它是否只是网络故障。
        • 轮询 SWF 以检查 PercentLoaded 值
          • 如果值大于 0,则假定 SWF 可用。
          • 如果值仍设置为“0”,则假定 SWF 不可用(我们不知道为什么)。使用您的后备方案。

    此处提供了使用 SWFObject 轮询 SWF 的 PercentLoaded 值的示例:http://learnswfobject.com/advanced-topics/executing-javascript-when-the-swf-has-finished-loading/index.html

    【讨论】:

    • 谢谢,这似乎是一个实用的解决方案,到目前为止我已经添加了备用 swf。我会尝试上面的代码并更新你一些时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多