Googles Maps, valeurs retournées (communication de Javascript à Objective-C)
Rocou
Membre
Je n'arrive à récupérer des données issus d'un script javascript. Enfin si, mais uniquement quand il s'agit du texte. ça doit être tout con mais je sèche.
Côté cocoa, j'ai ce code:
Et côté script:
J'obtiens:
Si à la place de return mesure;, je mets return "toto";, je récupère bien la chaine "toto"
La doc de callWebScriptMethod précise ceci:
Or quand je teste mon script sous safari, il fonctionne très bien: en mettant alert(mesure) à la place de return mesure, j'obtiens bien la valeur de mesure.
Côté cocoa, j'ai ce code:
id result;<br /> result = [map callWebScriptMethod:@"CaculDistance" withArguments:nil];<br /> NSLog(@"result: %@", result);<br />
Et côté script:
<script type="text/javascript"><br /> map = new GMap2(document.getElementById("map_area"));<br /> map.setCenter(new GLatLng(44.833, -0.567), 10);<br /> <br /> function CaculDistance(scrObject)<br /> { <br /> <br /> var directions;<br /> var mesure;<br /> <br /> directions = new GDirections(null,null);<br /> directions.load("from: 40600 sanguinet, FR to: 33000 bordeaux, FR");<br /> GEvent.addListener(directions,"load", function() {<br /><br /> mesure = directions.getDistance().meters;<br /><br /><br /> }); <br /> <br /> return mesure; <br /> }<br /> <br /> </script><br />
J'obtiens:
result: undefined
Si à la place de return mesure;, je mets return "toto";, je récupère bien la chaine "toto"
La doc de callWebScriptMethod précise ceci:
Return Value<br />The return value of the method. Returns WebUndefined if an exception is thrown in the JavaScript environment or the method has no return value.
Or quand je teste mon script sous safari, il fonctionne très bien: en mettant alert(mesure) à la place de return mesure, j'obtiens bien la valeur de mesure.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai déjà fais ce genre d'exercice mais je n'utilise pas le retour des fonctions mais j'utilise plutôt une méthode asynchrone. J'effectue l'appel de fonction avec les bons paramètres comme tu le fais mais pour récupèrer le résultat je demande au Javascript de faire un appel à une méthode Objective-C en passant le résultat en paramètre.
J'utilise surtout cette méthode pour récupérer plusieurs résultats mais ça pourrait régler ton problème.
Merci pour cette piste, celà dit, de la doc sur javascript on en trouve en pagaille mais concernant le lien avec Cocoa, c'est déjà plus rare.
Un petit exemple d'un appel à une méthode Objective-C en passant le résultat en paramètre serait le bienvenu :why?:
http://developer.apple.com/mac/library/documentation/AppleApplications/Conceptual/SafariJSProgTopics/Tasks/ObjCFromJavaScript.html
Bon c'est un lien d'Apple donc pas nécessairement le plus simple mais il m'a bien aider.Si tu butes alors j'essayerais de t'aider un peu plus