swfobject检测swfurl状态404

时间:2015-12-02 14:49:25

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

我有以下代码,

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状态结果

1 个答案:

答案 0 :(得分:1)

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

抛开SWFObject,跨域客户端404检测实际上是不可能的。最常见的建议是使用AJAX尝试加载文件,但这在跨域时失败。如果在加载文件时检查错误,则不会看到有关错误的详细信息(404 vs 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