10

Flashムービー内の同じドメインのCookie値を取得しようとしています。これは可能ですか?

ユーザーに変数fooを設定させ、任意のWebプログラミング言語を使用してそれを保存することを見てみましょう。その言語で簡単にアクセスできますが、HTMLページに印刷して渡さずにFlashムービーでアクセスしたいと思います。

4

7 に答える 7

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

Flash オブジェクトで「allowScriptAccess」パラメータを使用して JavaScript を有効にする必要があります。

次に、次のように、getCookie と setCookie の JavaScript 関数のペアを作成する必要があります ( 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 を配置し、Web ページから HTTPCookies.js をロードすると、Flash ムービー内から getCookie と setCookie を呼び出して、HTTP Cookie を取得または設定できるようになります。

これは、非常に単純な値 (文字列または数値) に対してのみ機能しますが、より複雑なものに対しては、SharedObject を使用する必要があります。

于 2008-09-22T11:12:10.767 に答える
0

フラッシュオブジェクトにはjavascriptを介してアクセスできる関数があると思います。したがって、もっと簡単な方法がない場合は、少なくともjavascript onloadハンドラーを使用して、外部からフラッシュアプ​​リにdocument.cookieを渡すことができます。

詳細はこちら: http: //www.permadi.com/tutorial/flashjscommand/

于 2008-09-20T22:18:29.200 に答える
0

フラッシュからCookie(ローカル共有オブジェクト)の読み取りと書き込みを行うことができます。Flash Cookieは、ドメイン名のディレクトリ内のPCに保存されます。これらのディレクトリは次の場所にあります。

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

アドビからのこの記事は良いスタートです。

于 2008-09-20T22:19:39.010 に答える
0

一部のグーグルは、クエリ文字列を使用して実行できることを示しています。

Webアプリケーションの場合、URLパラメーターによってswfに値を渡し、(swf内のアクションスクリプトを使用して)それらをサンドボックスに保存できます。

于 2008-09-20T22:22:48.940 に答える
0

cookie は document.cookie を介して JavaScript で使用できます。Flash の getURL を使用して JavaScript 関数を呼び出してみてください。

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

于 2008-09-21T09:29:19.260 に答える
0

HTTPCookies.as の getCookie メソッドは、「return」ステートメントを使用する必要があります。

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);    
  }
}
于 2008-10-01T18:27:39.353 に答える