Web视图和覆盖链接的问题

时间:2012-01-15 18:40:23

标签: iphone objective-c ios ipad uiwebview

我有一个UIWebView,其中的某些部分中包含<a href="" > <img src="" </a>。我已经为这个UIWebView添加了一个UITapGesture,所以我想要的基本上当用户点击一个图像时,它不会带你到指向它的链接而是做一些事情。我在防止图像转到它所指向的超链接时遇到问题。任何的想法?我尝试过注入javascript,以便在用户点击图像然后在:

时将href更改为某些虚假链接
- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

如果匹配我的假人,我检查了请求网址。但是,由于某些原因,使用:

更改href链接,这不起作用
NSString *stripLink = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href=%@", pt.x, pt.y, @"http://www.fakeurl.com"];
    if ([self stringByEvaluatingJavaScriptFromString:stripLink] != nil){
        NSString *testHref = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href", pt.x, pt.y];
        NSLog(@"FINAL HREF IS %@", [self stringByEvaluatingJavaScriptFromString:testHref]);
    }

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

如果您可以控制HTML源代码(听起来像是这样吗?),那么您可以更改href以使用自定义URI方案,例如:照片://然后你可以做到以下几点:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    if ([[url scheme] isEqualToString:@"photo"])
    {
         // Custom Handling Goes Here
         return NO;  // Stops the link being executed by UIWebView
    } else
         return YES;
}

但是,如果您无法控制HTML源代码,那么您可能需要稍微狡猾一些。例如。你可以查看路径的结尾,看看它是否是一个图像(jpg,png等......)