10


8

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

ユーザーに変数fooを設定させ、それを任意のWebプログラミング言語を使用して格納してみましょう。 私はその言語を通してそれに容易にアクセスすることができます、しかし私はそれをHTMLページの中でそれを印刷することを通してそれを渡さずにFlashムービーを通してそれにアクセスしたいです。

7 Answer


11


データを格納したり取り出したりしたいだけの場合は、おそらくSharedObjectクラスを使用します。 その詳細については、http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3 / flash / net / SharedObject.html [AdobeのSharedObjectリファレンス]を参照してください。

HTTPクッキーにアクセスしたい場合は、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:文字列、val:*):void {ExternalInterface.call( "setCookie"、key、val); }}

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

次に、次のように、getCookieとsetCookieの2つの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];

//(cookieString.charAt(0)== ''){cookieString = cookieString.substr(1); }

//(cookieString.indexOf(cookieSearch)== 0){cookieValue = cookieString.substr(cookieSearch.length); //の場合、実際の値を抽出します。 }}}}

cookieValueを返します。 }

関数setCookie(key、val){if(key){var date = new Date();

if(val!= null){// 1年で期限切れになるdate.setTime(date.getTime()(365 * 24 * 60 * 60 * 1000)); document.cookie = key "=" val "; expires =" date.toGMTString(); } else {//昨日の有効期限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を使用するべきです。


0


FlashオブジェクトにはJavaScriptを介してアクセスできる機能があると私は考えています。簡単な方法がない場合は、少なくともJavaScript onloadハンドラーを使用して、外部からdocument.cookieをFlashアプリに渡すことができます。

ここでより多くの情報:http://www.permadi.com/tutorial/flashjscommand/


0


あなたはフラッシュからクッキー(ローカル共有オブジェクト)を読み書きすることができます。 フラッシュクッキーはあなたのPCのドメイン名と同じディレクトリに保存されています。 これらのディレクトリは次の場所にあります。

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

Adobeからのこの articleは良いスタートです。


0


いくつかのグーグルはそれがhttp://forums.asp.net/t/1315014.aspx[query strings]を使用して実行できることを示しています。

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


0


cookieはdocument.cookieを通じてjavascriptで使用できます - javascript関数を呼び出すには、FlashのgetURLを使用してください。

getURL( 'javascript:document.cookie =" varname = varvalue; expires =木曜日、2001年8月2日20時47分11秒; path = "');


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


0


私は10年遅すぎます。 必要なデータをページに埋め込むことができれば、取得するのは10倍簡単になります。

flash.netをインポートします。*

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

function _onComplete(e:Event):無効{var wantedData:RegExp = /(.*?)/ig; var result:Object = wantedData.exec(String(_loader.data)); trace(result [0] .split( '')。join( '').split( '')。join( ''));

}