Mac中的Webview中的window.external

时间:2014-04-09 13:32:40

标签: javascript objective-c macos webview

在我的网页浏览中,我加载了一个本地网页,

                       function sendvalue(type,state)          {               window.external.sendMessage(类型,状态);          }                        显示WC     

在webview中加载如下,

-(void)gotWebview:(NSString *)pHTMLDoc{
    [[[self pWebView] mainFrame] loadHTMLString:pHTMLDoc baseURL:nil];
    [[self pWebView] setEditable:NO];
    [[self pWebView] setNeedsDisplay:YES];
    [[self pWebView] setFrameLoadDelegate:self];
    [[self pWebView] setEditingDelegate:self];
}

为了处理window.external,我试图做这样的事情,

scriptObject = [self windowScriptObject];
[scriptObject setValue:self forKey:@"window.external"];

即使我也试过这个,

- (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowScriptObject forFrame:(WebFrame *)frame
{
    [windowScriptObject setValue:self forKey:@"window.external"];
}

和绑定Objective C和JS的函数

+(NSString*)webScriptNameForSelector:(SEL)sel
{
    if(sel == @selector(sendMessage:))
        return @"sendMessage";
    return nil;
}

+ (BOOL)isSelectorExcludedFromWebScript:(SEL)sel
{
    if(sel == @selector(sendMessage))
        return NO;
    return YES;
}

在此之后,我期待如果按下按钮,它应该执行在Objective C中编写的sendMessge,但它没有击中,

还需要提一下,我将从服务器获取页面,因此无法更改它。 基本上我想知道如何在我的webview中绑定window.external,所以我可以挂钩这些调用, 我见过Embedded Webkit - script callbacks how?,但没有得到我所期待的。

0 个答案:

没有答案