0

内部に 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,

マイベックス

4

1 に答える 1

4

試してみてください:

 NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC('%@')", @"hello"]];

また

 NSString *selectedValue = [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"initWithDataFromObjC(\"%@\")", @"hello"]];
于 2012-07-06T06:49:24.267 に答える