在一次发布的时候,用到了上传组件,没想到qa测出来在ie9下面swf打不开,ie9下面debug开启,显示请求swfupload.swf的时候请求被挂起了,点击上传没反映,等了很久大概有5分钟吧,挂起请求请求200,一下子出来了三个请求flash的,这时候点击上传就正常了。
搞了半天,在网上找到这篇文章,原来是ie9在作祟,可能与ie9对active空间的要求有关吧,需要注册一个classid。
郁闷,搞了两个小时才查出来。
转自:http://www.cnblogs.com/blackice/archive/2013/02/16/2913087.html
打开swfupload.js,找到
SWFUpload.prototype.getFlashHTML = function ()
给object加上一个classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",就可以乐。
具体代码如下,需要判断一下,不然在Chrome下又显示不出为鸟。
SWFUpload.prototype.getFlashHTML =
function
() {
var
classid =
""
;
var
Sys = {};
var
ua = navigator.userAgent.toLowerCase();
if
(window.ActiveXObject) {
Sys.ie = ua.match(/msie ([\d.]+)/)[1];
}
if
(Sys.ie && Sys.ie.substring(0, 1) ==
"9"
) {
classid =
'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'
;
}
// Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay
return
[
'<object '
, classid,
' id="'
,
this
.movieName,
'" type="application/x-shockwave-flash" data="'
,
this
.settings.flash_url,
'" width="'
,
this
.settings.button_width,
'" height="'
,
this
.settings.button_height,
'" class="swfupload">'
,
'<param name="wmode" value="'
,
this
.settings.button_window_mode,
'" />'
,
'<param name="movie" value="'
,
this
.settings.flash_url,
'" />'
,
'<param name="quality" value="high" />'
,
'<param name="menu" value="false" />'
,
'<param name="allowScriptAccess" value="always" />'
,
'<param name="flashvars" value="'
+
this
.getFlashVars() +
'" />'
,
'</object>'
].join(
""
);
};
|