jquery uploadify的fileUploadSettings解决之道

最近用jquery的插件。uploadify.发现用fileUploadSettings无法改变参数。去网上看说这个功能还没有实现,估计再过几个星期才会实现。我这里提供我的一个替代方案。

执行$(‘#someid’).update_data(key,value);即可。

备注:只有FF 起了作用。

IE和chrome不行。对于IE和chrome估计要改flash源码才行了。可惜我不会as.只能等2.0了。

$.fn.extend({
update_data: function(key,value) {
if(typeof(value)==’object’){
   var scriptDataString = ”;
   for (var name in value) {
   scriptDataString += ‘&’ + name + ‘=’ + value[name];
   }
   value= escape(scriptDataString);
}
var obj=$(“#”+$(this).attr(“id”)+”Uploader”);
if($.browser.msie){
   obj = obj.find(“param[name=movie]”);
   obj.attr(“value”,url_replace(key,value,obj.attr(“value”)));
}
else{
   obj.attr(“src”,url_replace(key,value,obj.attr(“src”)));
}    
}
});

/*
**key要替换的参数名
**value替换后的参数值
**url,如果没有指定则为浏览器地址
*/
function url_replace(key,value,url){
if(arguments.length<2){
   alert(“param error”);
   return “param error”;
}
if(!url){
   var url=location.href;
}
url=url.replace(/#/,””);
if(request(key,url)!=””){
   reg = new RegExp(“(“+key+”=[^&]+)”,”ig”);
   return url.replace(reg,key+”=”+value);
}
else{
   var sep=url.indexOf(“?”)==-1?”?”:”&”;
   return url+sep+key+”=”+value;
}

}
/*
**获取 url 的参数值,不区分大小写,如无此参数,返回空字符串.
*/
function request(paras,url){
if(!url){
    var url = location.href;
}
var paraString = url.substring(url.indexOf(“?”)+1,url.length).split(“&”);
var paraObj = {} ;
for (i=0; j=paraString[i]; i++){
   paraObj[j.substring(0,j.indexOf(“=”)).toLowerCase()] = j.substring(j.indexOf(“=”)+1,j.length);
}
var returnValue = paraObj[paras.toLowerCase()];
if(typeof(returnValue)==”undefined”){
return “”;
}else{
return returnValue;
}
}