在我的网页浏览中,我加载了一个本地网页,
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?,但没有得到我所期待的。