Maison > interface Web > js tutoriel > le corps du texte

Comment réaliser l'interaction entre OC et JS

零到壹度
Libérer: 2018-04-13 16:44:34
original
1666 Les gens l'ont consulté

Cet article partage avec vous comment réaliser l'interaction entre OC et JS. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer

Le. premier type : JS transmet les valeurs à OC, en utilisant JavaScriptCore.framework.

code oc

#import <JavaScriptCore/JavaScriptCore.h>
Copier après la connexion
- (void) webViewDidFinishLoad:(UIWebView *)webView{
    JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    context[@"favQues"] = ^{
        NSArray *a = [JSContext currentArguments];
        for (id obj in a) {
            NSLog(@"obj:%@",obj);
        }
    };
}
Copier après la connexion

où favQues est la fonction qui renvoie les données en JS, et obj est la valeur transmise par JS à OC.

Code JS

function QMAction(id, subject, el) {
    favQues(id,subject,el);
}
Copier après la connexion

où QMAction est la méthode en HTML, id, subject, el sont les paramètres transmis et favQues is La fonction qui renvoie les données doit être cohérente avec celle du code OC.


Deuxième type : JS transmet la valeur à OC, en utilisant la méthode d'URL personnalisée.

Code OC

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    NSString *requestUrlStr = [[request.URL absoluteString] stringByRemovingPercentEncoding];
    if ([requestUrlStr hasPrefix:@"objc://"]) {
        NSArray *a = [requestUrlStr componentsSeparatedByString:@"://"];
        NSString *paramStr = a[1];
        NSArray *a1 = [paramStr componentsSeparatedByString:@":/"];
        if (a1.count > 0) {
            NSLog(@"%@-%@",a1[1],a1[2]);
        }else{
            NSLog(@"没有参数");
        }
        return NO;
    }
    return YES;
}
Copier après la connexion

Code JS

function QMAction(at, id, subject, el) {
    window.location.href="objc://"+":/"+subject+":/"+id;
}
Copier après la connexion

Parmi eux, objc:// est le sujet d'en-tête de protocole personnalisé négocié avec le backend et id est la valeur transmise à OC par JS, séparée par :/.

Recommandations associées :

Interaction entre OC et JS

Interaction entre OC et JS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal