有关flash无法读取FireFox中Cookie的Bug解决方法

来源:岁月联盟 编辑:zhu 时间:2009-01-04
有关flash无法读取FireFox中Cookie的Bug解决方法内容简介: 我之前写过文章[AS3]有关Flash无法读取FireFox中的Cookie的Bug ,关于这个Bug目前有一个变通的解决方法: /** * @author Kinglong * @version 0.1 */ package project.util { import com.klstudio.u   我之前写过文章“[AS3]有关Flash无法读取FireFox中的Cookie的Bug ”,关于这个Bug目前有一个变通的解决方法:

/**
* @author Kinglong
* @version 0.1
*/

package project.util {

import com.klstudio.util.StringUtil;
import flash.external.ExternalInterface;

public class UploadUtil{

public function UploadUtil() {
}

public static function fixNoIEBug(url:String):String {
var index:int = url.indexOf("?");
url += (index == -1)?"?ie=":"&ie=";
url += (isIE())?"1":"0" + getCookies();
return url;
}

public static function isIE():Boolean {
if (!ExternalInterface.available) {
return true;
}
return ExternalInterface.call("navigator.appVersion.indexOf","MSIE") != -1;
}

public static function getCookies():String {
if (!ExternalInterface.available) {
return "&c_userid=&c_password=";
}
var result:String = "";
var cookieStr:String = ExternalInterface.call("function(){return document.cookie;}");
var cookies:Array = cookieStr.split(';');
var count:uint = 0;
for (var i:uint = 0; i < cookies.length; i++ ) {
var items:Array = cookies[i].split('=');
if (StringUtil.trim(items[0]) == "c_userid" || StringUtil.trim(items[0]) == "c_password") {
result += "&" + StringUtil.trim(items[0]) + "=" + StringUtil.trim(items[1]);
count ++;
}
if (count >= 2) {
break;
}
}
return result;
}

}

}

看上面的代码就知道原理很简单,就是先判断是否为IE浏览器,如果是的话,服务端就通过正常的方式来读取Cookie值,否则的话,就通过客户端JS方法把cookie取到,然后再通过url传给服务端。