3

アプリを Android から iOS に移行しています。次の行では、iOS でコンパイラがエラーを返します。

webviewA.loadUrl("javascript:setVars(\"" + var1 + "\",\"" + var2 + "\")");//Android で適切に実行される

私が試しているiOSの場合、

[webViewA stringByEvaluatingJavaScriptFromString:@"javascript:setVars(\"" + var1 + "\",\""  + var2 +  "\")"];

iOSの正しい構文はどれですか? ありがとうございました。

4

1 に答える 1

9

this answer on another similar questionに従って、UIWebViewデリゲートメソッドを実装する必要がwebViewDidFinishLoad:あり、そこに実装し[myWebView stringByEvaluatingJavaScriptFromString:@"myJavaScriptCode()"]ます。

これを機能させるには、UIWebViewインスタンスにデリゲートを設定し、上記のデリゲート メソッドを実装して、ページが読み込まれた後に JavaScript が実行されるようにする必要があります。

のドキュメントは- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script こちらにあります

質問の他の部分については(明確にしてくれてありがとう!)..Objective-Cで文字列を連結するには、NSStringクラスメソッドを使用できますstringWithFormat:

たとえば、2 つの Objective-C 値を JavaScript 文字列に渡すには、次のようにします。

// Substitute your Objective-C values into the string
NSString *javaScript = [NSString stringWithFormat:@"setVars('%@', '%@')", var1, var2, nil];

// Make the UIWebView method call
NSString *response = [webViewA stringByEvaluatingJavaScriptFromString:javaScript];
于 2012-08-12T11:19:46.537 に答える