質問

Ajax 呼び出しを通じてリモート サーバーからオブジェクトを取得するスクリプトがあります。サーバーはオブジェクトを JSON 表記で返します。

ただし、Adobe AIRでは使用上の制限があります。 eval() セキュリティ上の理由から。したがって、リモートサーバーから応答を取得することはできますが、それを JavaScript オブジェクトに戻すことはできません。この問題の回避策はありますか?JSON はすぐに使用できるため、JavaScript オブジェクトに JSON を使用したいと考えています。

サイドノート :この問題を強制することによるセキュリティへの影響は理解していますが、私は競技会に向けて迅速なアプリケーション開発を行う予定なので、プログラムは簡単なプロトタイプにすぎず、運用目的には使用されません。それでも、私が今やろうとしていることにもっと良い代替手段があれば素晴らしいでしょう


アップデート:

おかげで テオ そして ジェイサイト 彼らの答えに対して。

今日学んだ重要なことの 1 つは、

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
Adobe AIR によって拡張されたタグ。チェックアウト テオさんの 詳細についてはリンクをご覧ください!

役に立ちましたか?

解決

見つけることができます JavaScriptで書かれたJSONパーサーはこちら (ソースコードはこちら)。JavaScript から as3corelib JSON パーサーを使用することもできます。 JavaScript から ActionScript ライブラリにアクセスする方法の説明はこちら.

他のヒント

現在の AIR リリース (v2.5) には、JSON.stringify() および JSON.parse() を介してネイティブ JSON サポートを備えた新しい WebKit がバンドルされています。

見ましたか as3corelib?JSON データ用の AS3 パーサーを提供しているようですが、私の希望は eval に依存しないことです (eval はセキュリティに悪影響を与える傾向があると指摘しました)。Javascript にも同様のライブラリがあり、(潜在的に) 悪意のあるデータに対して eval を呼び出すとセキュリティに影響するため、これらは json を解析するための好ましい方法である傾向があります。

JSON は Javascript Object Notation であるため、JavaScript を使用している場合は、すでにそこにいます。これらのリンクを参照してください。JSON から JavaScript オブジェクトを作成する方法の例が示されています。

http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

http://betterexplained.com/articles/using-json-to-exchange-data/

Flex / AS3 ルートに進むことにした場合は、jsight が述べたように、as3corelib から始めるのが良いでしょう。

iframeとサンドボックスブリッジを使えば可能だと思います。サンドボックス化された iframe でダウンロードしたコードに対して eval() を実行できるはずです。

からの抜粋 Adobe AIR 1.1 ドキュメント「...eval() の制限なしでコンテンツを実行できるように、サンドボックス化された子フレームでコンテンツを実行するほうが便利かもしれません...」

別の関連記事: AIR 上の構築:サンドボックスブリッジの操作

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top