Heim > Web-Frontend > js-Tutorial > Hauptteil

So realisieren Sie die Interaktion zwischen OC und JS

零到壹度
Freigeben: 2018-04-13 16:44:34
Original
1665 Leute haben es durchsucht

Der in diesem Artikel geteilte Inhalt zeigt, wie man die Interaktion zwischen OC und JS erkennt. Er hat einen gewissen Referenzwert.

Der erste Typ: JS übergibt Werte mithilfe von JavaScriptCore.framework an OC.

oc-Code

#import <JavaScriptCore/JavaScriptCore.h>
Nach dem Login kopieren
- (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);
        }
    };
}
Nach dem Login kopieren

wobei favQues die Funktion ist, die Daten in JS zurückgibt, und obj ist der von JS an OC übergebene Wert.

JS-Code

function QMAction(id, subject, el) {
    favQues(id,subject,el);
}
Nach dem Login kopieren

wobei QMAction die Methode in HTML ist, id, subject, el die übergebenen Parameter und favQues sind ist Die Funktion, die Daten zurückgibt, muss mit der im OC-Code übereinstimmen.


Zweiter Typ: JS übergibt den Wert an OC unter Verwendung einer benutzerdefinierten URL-Methode.

OC-Code

- (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;
}
Nach dem Login kopieren

JS-Code

function QMAction(at, id, subject, el) {
    window.location.href="objc://"+":/"+subject+":/"+id;
}
Nach dem Login kopieren

Unter diesen ist objc:// der mit dem Backend ausgehandelte Betreff des benutzerdefinierten Protokoll-Headers und id der von JS an OC übergebene Wert, getrennt durch :/.

Verwandte Empfehlungen:

Interaktion zwischen OC und JS

Interaktion zwischen OC und JS

Das obige ist der detaillierte Inhalt vonSo realisieren Sie die Interaktion zwischen OC und JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage