从UIWebView Javascript中侦听Objective-C中的通知

时间:2012-06-30 12:14:27

标签: javascript jquery objective-c ios

是否可以在UIWebView中侦听Javascript发布的通知?还是类似的?我曾想过在Objective-C中重复一个监视JS变量的函数,但肯定有更好的方法吗?

我想在UIWebView中加载特定图像时(我可以在jQuery中使用.load方法),当图像加载时我想隐藏原生UIActivityIndi​​cator。我不想在网络视图中使用gif!

$('img.someImage').load(function(){
//fire something for obj-c to listen to!
});

1 个答案:

答案 0 :(得分:2)

将事件从您的html页面传递到iPhone应用程序的唯一方法是使用url,

如果您想要传递特殊的偶数,请将您的js更改为新的网址,例如"MyCustomURl://DoSomeThing"

现在,在您的iPhone应用程序中,将webView的代理设置为self

并添加以下功能

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *absolute = [request.URL absoluteString];

    if ([absolute isEqualToString:@"MyCustomURl://DoSomeThing"]) {
        //Do what you want here
        return NO;//this will not load the url
    }

    return YES;
}