Question

petite question: Qu'est-ce, et comment puis-je « sourceid » est une exception renvoie un lien à la chaîne / fichier source pertinente

Longer histoire:

Je suis en cours d'exécution du code Javascript dans une application native iPhone via [UIWebView stringByEvaluatingJavaScriptFromString:]. Pour aider le développement, et vérifier plus tard le code fourni par l'utilisateur, utiliser la fonction suivante pour exécuter en toute sécurité tout code:

// Inside @implementation MyJS
- (NSString *)runJS:(NSString *)js {
    // Do some escaping on 'js' to make it look like a string literal.
    js = escape(js);
    NSString *result =
        [webView stringByEvaluatingJavaScriptFromString:
            [NSString stringWithFormat:@"try { JSON.stringify(eval(\"%@\")); } except (e) { JSON.stringify(e); }", js]
        ];
    return result;
}

Si tout va bien, [MyJS runJS:js] fonctionne très bien et retourne une chaîne JSON contenant le résultat de l'évaluation de la dernière instruction dans le code « js ».

Maintenant, si mauvaises choses se produisent au cours de l'évaluation, je reçois un objet d'exception JSONified. Par exemple, dans le cas d'une erreur de syntaxe dans le code « js », je reçois quelque chose comme ceci:

  

{ "message": "Erreur d'analyse", "ligne": 1, "sourceid": 26121296}

Ce qui est déjà très utile pour suivre les problèmes ...

Cependant, comme je lance plusieurs chaînes par runJS:, je voudrais être en mesure d'identifier lequel a provoqué l'exception (car une erreur d'exécution pourrait provenir d'une fonction qui a été créé dans une chaîne précédente code javascript). Cette propriété « sourceid » semble intéressant, mais je ne peux pas trouver ce qu'il pointe. Il ressemble à une adresse de pointeur (valeur similaire en tant que pointeurs vers d'autres objets), mais il ne correspond pas à l'une des chaînes que je l'ai passé à l'évaluateur. Comment puis-je faire ce lien?

Pour les points bonus: Y at-il de la documentation sur l'environnement javascript spécifique à UIWebView, comme cet objet d'exception?

scroll top