2011-05-12 7 views
4

두 가지 유사한 질문이 있지만 좀 더 기본적인 내용입니다.WebScriptObject를 통해 JS Scripting Environment에 코코아 개체 노출

간단한 코코아 개체를 WebScriptObject를 통해 WebView로 노출하려고합니다. 페이지에서 코코아 개체로 메시지를 보내도록 할 수 있습니다. 이것에 대한 문서는 매우 명확하지만, 어떤 이유로 그것을 작동시킬 수는 없습니다. 궁금한 점이 있으시면 ...

다음은 스크립팅 환경에로드하는 객체입니다.

if('client' in window) { 

var client = window.client; 

console.log('---'); 

console.log('client.test(): ' + client.test()); 

console.log('---'); 

} 
:

사물의 JS 측면에서
- (void)webView:(WebView *)webView didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame { 

    Client *_client = [[Client alloc] init]; 
    [windowObject setValue:_client forKey:@"client"]; 

} 

, 내가 정말 기본적인 일을하고 그런 다음

@interface Client : NSObject { 

    NSString *test; 

} 

@implementation Client 

- (id)init { 

    self = [super init]; 
    test = [[NSString alloc] initWithString:@"Hey Simon"]; 
    return self; 

} 

- (NSString *)test { 

    return test; 
} 

내가 함께, 웹보기의 frameLoad 위임에 해당 객체를로드하고있어

JS 콘솔에 TypeError가 표시됩니다. 'client.test'표현식 결과 [undefined]가 함수가 아닙니다.

몇 가지.

console.log('Client object: ' + client) 

하지만 난 그냥 제대로 내 코코아 방법을 노출하는 방법을 모른다 : 나는 조건을 통과하지 않을 플러스 내가 함께 설명을 볼 수 있습니다 제대로 때문에 개체가 스크립팅 환경에로드되는 알고있다. 위에서 말한 것을 살펴보면, 수업에서 메소드를 구현하는 방법이나 JS에서 호출하는 방법에 문제가 있습니까? 사전에

감사합니다, 알렉

답변

2

그것은 워드 프로세서에 바로 거기에 있었다. :(

당신은 + (BOOL) isSelectorExcludedFromWebScript가 구현해야 :. (SEL) aSelector 개체에 대해 당신이 전달하는 내 경우에 따라서

, 나는

+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector 

{ 
    if (aSelector == @selector(test)) return NO; 
    return YES; 
} 
을 써야했다
관련 문제