Il existe quelques bibliothèques, mais je n'en ai utilisé aucune dans de grands projets, vous voudrez peut-être les essayer:
-
Cependant, je pense que c'est quelque chose d'assez simple pour que vous puissiez l'essayer vous-même. J'ai personnellement fait exactement cela quand j'avais besoin de le faire. Vous pouvez également créer une bibliothèque simple qui répond à vos besoins.
1. Exécutez les méthodes JS à partir d'Objective-C
Ce n'est en réalité qu'une seule ligne de code.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Plus de détails sur la documentation officielle d' UIWebView .
2. Exécutez les méthodes Objective-C à partir de JS
Ceci est malheureusement un peu plus complexe, car il n'y a pas la même propriété windowScriptObject (et la même classe) qui existe sur Mac OSX permettant une communication complète entre les deux.
Cependant, vous pouvez facilement appeler à partir d'URL personnalisées javascript, telles que:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
Et interceptez-le d'Objective-C avec ceci:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *URL = [request URL];
if ([[URL scheme] isEqualToString:@"yourscheme"]) {
// parse the rest of the URL object and execute functions
}
}
Ce n'est pas aussi propre qu'il devrait l'être (ou en utilisant windowScriptObject) mais cela fonctionne.
3. Écoutez les événements JS natifs d'Objective-C (par exemple, l'événement DOM ready)
D'après l'explication ci-dessus, vous voyez que si vous voulez faire cela, vous devez créer du code JavaScript, le joindre à l'événement que vous souhaitez surveiller et appeler le bon window.location
appel pour être ensuite intercepté.
Encore une fois, pas propre comme il se doit, mais cela fonctionne.