我有以下代码,
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:
如果swfurl是404,那么我们可以用其他url替换它(path-to-self-domain-swf)
我也试过checking broken URL但是因为交叉 域名政策它没有给我想要的swfurl状态结果
答案 0 :(得分:1)
SWFObject没有任何检查404状态的功能或能力。事实上,只要SWF的标记成功添加到页面,它就会报告嵌入成功。它不验证SWF实际加载和播放。
抛开SWFObject,跨域客户端404检测实际上是不可能的。最常见的建议是使用AJAX尝试加载文件,但这在跨域时失败。如果在加载文件时检查错误,则不会看到有关错误的详细信息(404 vs 403或500等)。这种方法在页面加载时间和网络请求方面也很昂贵 - 您尝试加载文件两次。我所做的 - 这是一个黑客攻击 - 尝试像往常一样加载SWF,但附加一个定时器,轮询Flash Player以确保文件实际加载。如果您未在给定的时间跨度内看到负载百分比有任何进展,则可以假设SWF不可用且负载已失败。
例如(操作顺序):
此处提供了使用SWFObject轮询SWF的PercentLoaded值的示例:http://learnswfobject.com/advanced-topics/executing-javascript-when-the-swf-has-finished-loading/index.html