StringByEvaluatingJavaScriptFromString ne fonctionne pas

J'essaie d'appeler une fonction javascript à partir du fichier html local chargé dans UIWebView mais il ne répond pas

Ça ressemble à ça

 NSString *script=[NSString stringWithFormat:@"sample()"]; if (tekst.loading) { NSLog(@"Loading"); } else { NSLog(@"Fully loaded"); [tekst stringByEvaluatingJavaScriptFromString:script]; } 

Et en html

 <head> .... <script type='text/javascript'> function sample() { alert('Paznja'); } </script> ... </head> 

Il me semble que vous n'utilisez pas un délégué sur votre UIWebView. Si vous définissez un délégué et mettez l'appel au Javascript dans la méthode "- (vide) webViewDidFinishLoad: (UIWebView *) webView", cela fonctionne bien:

 UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 700.0, 700.0)]; [self.view addSubview:wv]; wv.delegate = self; [wv loadHTMLString:@"<html><head><script type='text/javascript'>function sample() {alert('Paznja');}</script></head><body><h1>TEST</h1></body></html>" baseURL:nil]; [wv release]; 

Et dans la même classe:

 - (void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavaScriptFromString:@"sample()"]; } 

Lorsque je lance ce code, le message d'alerte fonctionne bien.

Note supplémentaire, si vous attendez un objet de la fonction javascript plutôt que d'une chaîne, procédez comme suit:

 NSString *json = [self.webView stringByEvaluatingJavaScriptFromString:@"JSON.stringify(TestMethod())"];