加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Flash中访问Cookie?

发布时间:2020-12-15 07:30:57 所属栏目:百科 来源:网络整理
导读:我正在寻找一个Flash电影中同一个域的Cookie值.这可能吗? 让我们看看我让一个用户设置一个变量foo,并且我使用任何Web编程语言存储它.我可以通过该语言轻松访问它,但是我想通过Flash电影访问它,而不通过在HTML页面中打印来传递它. 解决方法 如果您只想存储和
我正在寻找一个Flash电影中同一个域的Cookie值.这可能吗?

让我们看看我让一个用户设置一个变量foo,并且我使用任何Web编程语言存储它.我可以通过该语言轻松访问它,但是我想通过Flash电影访问它,而不通过在HTML页面中打印来传递它.

解决方法

如果您只想存储和检索数据,则可能需要使用SharedObject类.请参阅 Adobe’s SharedObject reference了解更多细节.

如果要访问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);
    }
}

您需要确保使用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();
        }
    }
}

一旦您的Flash项目中有HTTPCookies.as,并从您的网页加载了HTTPCookies.js,您应该可以从Flash影片中调用getCookie和setCookie来获取或设置HTTP Cookie.

这只适用于非常简单的值 – 字符串或数字 – 但是对于任何更复杂的事情,您应该使用SharedObject.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读