Question

Je souhaite récupérer les valeurs de cookie du même domaine dans une animation Flash. Est-ce possible?

Voyons que je laisse un utilisateur définir une variable foo et que je la stocke en utilisant n’importe quel langage de programmation Web. Je peux y accéder facilement via cette langue, mais je souhaiterais y accéder via la séquence Flash sans la transmettre via son impression dans la page HTML.

Était-ce utile?

La solution

Si vous souhaitez simplement stocker et récupérer des données, vous souhaiterez probablement utiliser la classe SharedObject. Pour plus de détails, consultez la référence SharedObject d'Adobe . / p>

Si vous souhaitez accéder aux cookies HTTP, vous devez utiliser ExternalInterface pour dialoguer avec javascript. Pour ce faire, nous avons une classe d'assistance appelée 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);
    }
}

Vous devez vous assurer que vous activez javascript à l'aide du paramètre 'allowScriptAccess' dans votre objet flash.

Ensuite, vous devez créer une paire de fonctions javascript, getCookie et setCookie, comme suit (avec 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();
        }
    }
}

Une fois que vous avez HTTPCookies.as dans votre projet flash et HTTPCookies.js chargé depuis votre page Web, vous devriez pouvoir appeler getCookie et setCookie à partir de votre animation flash pour obtenir ou définir des cookies HTTP.

Cela ne fonctionnera que pour des valeurs très simples - des chaînes ou des nombres - mais pour tout ce qui est plus compliqué, vous devriez vraiment utiliser SharedObject.

Autres conseils

Je pense que les objets flash ont des fonctions accessibles via javascript. Par conséquent, s'il n'existe pas de moyen plus simple, vous pouvez au moins utiliser un gestionnaire javascript onload et transmettre document.cookie à votre application flash de l'extérieur.

Plus d'infos ici: http://www.permadi.com/tutorial/flashjscommand/

Vous pouvez lire et écrire des cookies (objet partagé local) à partir de flash. Les cookies Flash sont stockés sur votre PC dans un répertoire avec le nom de votre domaine. Ces répertoires sont situés à:

[Root drive]:\Documents and Settings\[username]\Application Data\Macromedia\Flash Player\#SharedObjects\

Cet article d'Adobe est un bon début.

Certains utilisateurs de Google montrent que cela peut être réalisé à l'aide des chaînes de requête :

  

Pour les applications Web, vous pouvez passer   les valeurs à swf par les paramètres url, et   (avec script d'action à l'intérieur du swf)   les dans le bac à sable.

les cookies sont disponibles en javascript via document.cookie - essayez d’utiliser la méthode getURL de Flash pour appeler une fonction javascript.

getURL ('javascript: document.cookie = "varname = varvalue; expires = Thu, 2 Aug 2001 20:47:11 UTC; path =" quot = ");

La méthode getCookie dans HTTPCookies.as devrait utiliser " return " déclaration.

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);    
  }
}

J'ai 10 ans de retard. Si vous pouvez intégrer les données dont vous avez besoin dans la page, il est 10 fois plus facile à récupérer.

import flash.net.*

var _loader:URLLoader = new URLLoader();
var _req:URLRequest = new URLRequest('https://stackoverflow.com');
_loader.addEventListener(Event.COMPLETE, _onComplete);
_loader.load(_req);

function _onComplete(e:Event):void{
    var wantedData:RegExp = /<div class="cool-data">(.*?)</div>/ig;
    var result:Object = wantedData.exec(String(_loader.data));
    trace(result[0].split('<div class="cool-data">').join('')
                   .split('</div>').join(''));

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top