内部に HTML ページを含む UIWebView があります。ここで、HTML 内で JS 関数を呼び出し、Objective-C 変数からいくつかの値を渡したいと考えています。
- (void) webViewDidFinishLoad:(UIWebView *)_webView{
NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(%@)", @"hello"]];
NSLog(@"webViewDidFinishLoad %@", @"YES");
}
HTML ファイル内の JS 関数:
function initWithDataFromObjC(param1) {
alert(param1);
}
シミュレーターでアプリを実行すると、HTML が正しく読み込まれることもあれば、スタックして読み込みが完了しないこともあります。それにもかかわらず、「こんにちは」のポップアップは表示されません。
コーディングを次のように変更すると:
- (void) webViewDidFinishLoad:(UIWebView *)_webView{
NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:@"initWithDataFromObjC()"];
NSLog(@"webViewDidFinishLoad %@", @"YES");
}
パラメータのない JS 関数
function initWithDataFromObjC() {
alert("hello");
}
2 番目のコンストラクトは問題なく実行されます。しかし、いくつかのパラメーターを渡そうとすると、なぜ正しく動作しないのでしょうか?
BR & THX,
マイベックス