Comment appeler Objective C méthode de Javascript et de renvoyer les données de Javascript dans iOS?
Dans iOS, comment puis-je appeler un Objectif-C méthode de Javascript dans un UIWebView
et l'ont envoyer des données vers le Javascript? Je sais que cela peut être fait sur OS X à l'aide de la bibliothèque Webkit, mais est-ce possible sur iOS? Comment PhoneGap parvenir?
Vous devez vous connecter pour publier un commentaire.
Il existe une API pour appeler JavaScript directement à partir d'Objective-C, mais vous ne pouvez pas appeler Objective-C directement à partir de Javascript.
Comment dire à votre code Objective-C pour faire quelque chose de Javascript dans votre WebView
Vous avez pour sérialiser l'option Javascript de votre action dans une URL spéciale et d'intercepter l'URL dans la UIWebView du délégué du
shouldStartLoadWithRequest
méthode.Là, vous pouvez désérialiser que l'URL spécifique et de l'interpréter à faire ce que vous voulez sur l'Objective-C côté. (Vous devez retourner
NO
ci-dessusshouldStartLoadWithRequest
méthode de sorte que la UIWebView n'utilisez pas votre faux URL pour faire une requête HTTP pour charger une page web.)Comment Exécuter du Code Javascript à partir d'Objective-C
Vous pouvez alors exécuter le Javascript, Objective-C par l'appel de cette méthode sur votre webview.
Exemple De Code
Je recommande d'utiliser un bidon schéma d'URL de sorte qu'il sera facile de faire la différence entre votre action les Url et les légitimes demandes. Vous pouvez en faire la demande dans le code Javascript, le long de ces lignes:
Puis dans le
UIWebView.delegate
'sshouldStartLoadWithRequest
méthode, vous pouvez consulter le schéma d'URL et de fragments pour vérifier si il est normal de demander ou de l'une de vos actions spéciales. (Le fragment d'une URL est ce qui vient après la#
.)(Lire cette réponse si vous avez besoin d'aide désérialisation de votre chaîne json dans un NSDictionary.)
$fragment = array("key"=>"val"); $url = 'myApp://actionType#'.rawurlencode(json_encode($fragment));
stringByEvaluatingJavaScriptFromString:
pour exécuter du code Javascript directement à partir de votre code Objective-C. Par exemple, vous pourriez avoir une UIButton appelez la méthode à exécuter du code Javascript dans votre UIWebView.stringByEvaluatingJavaScriptFromString
vous permet de communiquer de ObjC -> Javascript. Afin de communiquer dans l'autre sens, à partir de Javascript -> ObjC, vous devez sérialiser l'Url dans la méthode décrite ci-dessus.Changement de page peut causer plusieurs questions:
La solution, tel qu'il est offert ici, est:
Gardez à l'aide de la même technique de l'URL (sur js et objective-c), il suffit de changer l'emplacement avec un iframe:
Espère que ça aide
D'Objective-C: Vous pouvez passer d'une fonction javascript dans une chaîne de UIWebView. La page web de l'exécuter et de retourner un résultat. De cette façon, vous pouvez passer des variables et récupérer des données à partir de Javascript.
Exemple:
À partir de Javascript: Transmettre vos données à l'intérieur de l'URL. Intercepter les demandes d'URL dans UIWebViewDelegate. Obtenir les données de l'abandon et de la demande d'URL en retour NON.
Intercepter la requête d'URL