를 호출하는 방법 Objective-C 방법에서 자바스크립트는 코코아/웹킷 응용 프로그램?

StackOverflow https://stackoverflow.com/questions/92471

문제

나는 코코아를 사용하는 응용 프로그램 WebView 를 표시하는 HTML 인터페이스입니다.어떻게 내가에 대해 이동 전화 Objective-C 방법에서 자바스크립트 함수에서 HTML 하시겠습니까?

도움이 되었습니까?

해결책

이 문서 developer.apple.com.

다른 팁

는 경우에 당신은 그것을 하고 싶으십시에 아이폰 앱,당신이 할 필요가와 UIWebViewDelegate 방법 shouldStartLoadWithRequest:

이 api http://code.google.com/p/jsbridge-to-cocoa/ 당신을 위해 그것을 않습니다.그것은 매우 가볍습니다.

오히려 그린,애플의 문서가요 나를 위해,그래서 내가 만들 개념의 증거를 호출하는 방법을 목표 C 에서 자바 스크립트와 그 반대에서 코코아하지만,후자는 훨씬 더 쉽습니다.

첫 번째가 있는지 확인 webview 로 setFrameLoadDelegate:

[testWinWebView setFrameLoadDelegate:self];

당신을 말할 필요 webview 계 특정 개체에 대한 한 빨리 그것은:

- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowScriptObject forFrame:(WebFrame *)frame {
    //add the controller to the script environment
    //the "ObjCConnector" object will now be available to JavaScript
    [windowScriptObject setValue:self forKey:@"ObjCConnector"];
}

그런 다음 비즈니스의 커뮤니케이션:

// a few methods to log activity
- (void)acceptJavaScriptFunctionOne:(NSString*) logText {
    NSLog(@"acceptJavaScriptFunctionOne: %@",logText);
}
- (void)acceptJavaScriptFunctionTwo:(NSString*) logText {
    NSLog(@"acceptJavaScriptFunctionTwo: %@",logText);
}

//this returns a nice name for the method in the JavaScript environment
+(NSString*)webScriptNameForSelector:(SEL)sel {
    NSLog(@"%@ received %@ with sel='%@'", self, NSStringFromSelector(_cmd), NSStringFromSelector(sel));
    if(sel == @selector(acceptJavaScriptFunctionOne:))
        return @"functionOne"; // this is what you're sending in from JS to map to above line
    if(sel == @selector(acceptJavaScriptFunctionTwo:))
        return @"functionTwo"; // this is what you're sending in from JS to map to above line
    return nil;
}

//this allows JavaScript to call the -logJavaScriptString: method
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)sel {
    NSLog(@"isSelectorExcludedFromWebScript: %@", NSStringFromSelector(sel));
    if(sel == @selector(acceptJavaScriptFunctionOne:) ||
       sel == @selector(acceptJavaScriptFunctionTwo:))
        return NO;
    return YES;
}

키에는 여러 개 있는 경우 방법이라고 부르고 싶어요,당신은 그들 모두는 제외에서 isSelectorExcludedFromWebScript 방법,그리고 당신은 필요한 자바스크립트를 호출하여 지도를 ObjC 방법에 webScriptNameForSelector.

전체 프로젝트 개념의 증거 file:https://github.com/bytestudios/JS-function-and-ObjC-method-connector

저는 솔루션을 사용하여 NimbleKit.수출 목적은 C 함수에서 Javascript.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top