Heim >Web-Frontend >js-Tutorial >So realisieren Sie die Interaktion zwischen OC und JS

So realisieren Sie die Interaktion zwischen OC und JS

零到壹度
零到壹度Original
2018-04-13 16:44:341701Durchsuche

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>
- (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);
        }
    };
}

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);
}

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;
}

JS-Code

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

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!

Stellungnahme:
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