1

私が構築している iPad アプリには、データによって駆動される動作がいくつかあります。データとは、サーバー側から送信された json ファイルに埋め込まれた JavaScript コードを意味します。

以下に例を示します。

if ((q12+q13+q14*2-2)>0){
    goto(q45);
    show(q1,q2);
}else{
    goto(q34);  
}

iOS 側から、q12/13/14 の値を知っているので、javascript で定義されたロジックを実行して結果を受け取り、さまざまなインターフェイスの動作を実行できるようにします。出来ますか?私はUIWebViewでヘッダーを付けて、JavaScriptから結果を得ることができますが、私の場合、JavaScriptはHTML URLではなくjson内にあります。

4

1 に答える 1

1

実際、UIWebView に任意の JavaScript を実行させ、結果として返された値を取得することは可能です。ただし、実行しているコードの性質を完全に理解しているかどうかはわかりません。そのため、以下で基本的なアプローチを示しました。実行したい JavaScript ロジックのタイプについて、より具体的な詳細を提供していただければ、さらにお役に立てるかもしれません。

UIWebView *webView = [[UIWebView alloc] init];

NSNumber *q1 = @20;
NSNumber *q2 = @30;

// Create a simple JavaScript addition statement.
NSString *javascript;
javascript = [NSString stringWithFormat:@"%@ + %@", q1, q2];

// Note, the result will always be an NSString
NSString *result = [webView stringByEvaluatingJavaScriptFromString:javascript];
// result is @"50"

また、いくつかの用語を修正したいと思います。あなたは「JSON ファイルに埋め込まれた JavaScript コード」と言いました。実際には、JSON 表記形式には名前と値のペアしか含めることができません。実行可能な JavaScript コードを含めることはできません。おそらく、サーバーから JavaScript ファイルをロードしていると言うつもりでしたか?

最後に、このようにアプリケーションの外部からロードされたコードを実行する場合は、誰かがアプリケーションをだましてロードさせようとする悪意のある JavaScript から保護するために、適切な技術設計上の予防措置を常に講じる必要があります。

于 2013-01-05T15:37:56.160 に答える