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())"];