iOS Objective-C JavaScriptCore JSContextでproj4.js(projections Javascript、http://proj4js.org)を実行できませんでした。コンテキストで実行しようとすると、proj4関数は、同じJSContextで実行しようとしている後続のJavascriptコードでは使用できません。JavaScriptCore JSContextでproj4.jsを実行できません
なJSContext上の取扱いJavascriptの例外を有効にした後、私はproj4.jsを実行しようとしたとき、私は次の例外を取得することを見つける:
TypeError: undefined is not an object (evaluating 'b.proj4=a()')
私は成功し、いくつかの経由WKWebViewで同じproj4.jsを実行しましたスクリプトをロードするHTML。そこでうまく動作します。しかし、私はそれを使用してJavascript出力からObjective-Cオブジェクトにオブジェクトを変換するJSContextで実行する必要があります。
NSString *proj4Path = [[NSBundle mainBundle] pathForResource:@"proj4" ofType:@"js" inDirectory:@"proj4"];
NSString *proj4JS = [NSString stringWithContentsOfFile:proj4Path usedEncoding:nil error:nil];
JSContext *context = [[JSContext alloc] init];
context.exceptionHandler = ^(JSContext *context, JSValue *exception) {
NSLog(@"JAVASCTIPT EXCEPTION: %@", exception);
};
[context evaluateScript:proj4JS]; // FAILS HERE
を、私は非常に単純なJavaScriptで最後の行は、それが正常に動作することを交換する場合:
はここで失敗したコードです。たとえば、したがって、コンテキスト自体は機能しているようです。おそらく、JSContextの環境や設定に問題がありますが、私は何も考えることはできません。
EDIT:例外が発生しproj4.jsの行は次のとおりです。
"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.proj4=a()
だから、これは「ウィンドウ」も「グローバル」や「自己」のいずれもがなJSContext環境で定義されていることを示すことになる(I思う?)。私はJavaScriptCoreを新しくしています(JavaScriptには少し新機能です)ので、ここからどこに行くのかは分かりません(でも私は研究を続けます)。