Chr*_*tow 10 cookies flash actionscript
我想在Flash电影中抓取同一个域的cookie值.这可能吗?
让我们看看我让用户设置变量foo并使用任何Web编程语言存储它.我可以通过该语言轻松访问它,但我希望通过Flash电影访问它,而不通过HTML页面中的打印传递它.
Sim*_*mon 11
如果您只想存储和检索数据,则可能需要使用SharedObject类.有关详细信息,请参阅Adobe的SharedObject参考.
如果要访问HTTP cookie,则需要使用ExternalInterface与javascript通信.我们这样做的方法是有一个名为HTTPCookies的帮助器类.
HTTPCookies.as:
import flash.external.ExternalInterface;
public class HTTPCookies
{
public static function getCookie(key:String):*
{
return ExternalInterface.call("getCookie", key);
}
public static function setCookie(key:String, val:*):void
{
ExternalInterface.call("setCookie", key, val);
}
}
Run Code Online (Sandbox Code Playgroud)
您需要确保使用flash对象中的'allowScriptAccess'参数启用javascript.
然后你需要创建一对javascript函数,getCookie和setCookie,如下所示(感谢quirksmode.org)
HTTPCookies.js:
function getCookie(key)
{
var cookieValue = null;
if (key)
{
var cookieSearch = key + "=";
if (document.cookie)
{
var cookieArray = document.cookie.split(";");
for (var i = 0; i < cookieArray.length; i++)
{
var cookieString = cookieArray[i];
// skip past leading spaces
while (cookieString.charAt(0) == ' ')
{
cookieString = cookieString.substr(1);
}
// extract the actual value
if (cookieString.indexOf(cookieSearch) == 0)
{
cookieValue = cookieString.substr(cookieSearch.length);
}
}
}
}
return cookieValue;
}
function setCookie(key, val)
{
if (key)
{
var date = new Date();
if (val != null)
{
// expires in one year
date.setTime(date.getTime() + (365*24*60*60*1000));
document.cookie = key + "=" + val + "; expires=" + date.toGMTString();
}
else
{
// expires yesterday
date.setTime(date.getTime() - (24*60*60*1000));
document.cookie = key + "=; expires=" + date.toGMTString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
一旦你的flash项目中有HTTPCookies.as,并且从你的网页加载了HTTPCookies.js,你就可以从flash电影中调用getCookie和setCookie来获取或设置HTTP cookie.
这只适用于非常简单的值 - 字符串或数字 - 但对于任何更复杂的值,您应该使用SharedObject.
归档时间: |
|
查看次数: |
20342 次 |
最近记录: |