2012-02-09 1 views
2

J'ai un gros problème. Je dois passer une variable d'une fonction javascript dans une variable objective-C. Ce sont mes des parties de code:Comment passer une valeur de javascript à objectif-C

Javascript:

function abc(){ 
something... 
} 

Objective-C:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"documentElement.textContent"]; 

Les impressions de code javascript à la vidéo un numéro que je veux utiliser dans mon code Objective-C, mais avec ce rien apparaît, à la place en utilisant ce code:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"]; 

Il passe le valeur que je veux et le code entier de la fonction javascript!

S'il vous plaît quelques conseils .... Merci à tous !!!

`

+0

Je suppose que vous avez besoin d'un runtime javascript pour l'intégrer dans l'application Objective C ... – fortran

+0

@fortran: WebView a une fonctionnalité JavaScript, d'où la fonction qu'il appelle. –

+0

@ T.J.Crowder oh, je pensais que la fonction "stringByEvaluatingJavaScriptFromString" était une sorte de nom d'espace réservé pour une fonction réelle !!! Je ne pouvais pas croire qu'un tel nom existait^_^ – fortran

Répondre

3

Vous wan à appel la fonction, non seulement s'y référer:

myLabel.text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent()"]; 

le bit clé est à la fin:

...documentElement.textContent()"]; 
//       ^^ 

Puisque les fonctions JavaScript sont objets de première classe, quand vous faites:

x = functionName; 

... x reçoit une référence à la fonction. Dans votre cas, puisque UIWebView le contraint alors à une chaîne, vous finissez par appeler toString sur la fonction, qui sur la plupart des implémentations JavaScript vous donne le code de la fonction (bien que cela ne soit spécifié par aucune norme).

Pour réellement appel une fonction, vous mettez entre parenthèses après (avec rien en eux, s'il n'y a pas d'arguments vous devez passer, ou avec des arguments en eux si vous faites), par exemple:

x = functionName(); 

Divulgation: Je ne connais rien au développement iOS, Objective-C, ou UIWebView, mais j'ai pu trouver rapidement la fonction stringByEvaluatingJavaScriptFromString que vous utilisiez, puis j'ai confirmé par this page que la chaîne après le @ doit être un code JavaScript valide.

Questions connexes