iphone - WebView 和覆盖链接的问题

标签 iphone objective-c ios ipad uiwebview

我有一个 UIWebView,其中某些部分有 <a href="" > <img src="" </a>在里面。我已经向此 UIWebView 添加了 UITapGesture ,所以我想要的基本上是当用户点击图像时,它不会将您带到指向它的链接,而是执行某些操作。我在阻止图像转到它指向的超链接时遇到问题。任何想法?我尝试注入(inject) javascript,以便当用户点击图像时将 href 更改为一些虚假链接,然后点击:

- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

我检查了请求 URL 是否与我拥有的虚拟地址匹配。但是,这不起作用,由于某种原因,使用以下命令更改 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]);
    }

还有其他想法吗?

最佳答案

如果您可以控制 HTML 源(听起来您确实可以控制?),那么您可以更改 href 以使用自定义 URI 方案,例如photo://然后您可以执行以下操作:

- (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 等...)

关于iphone - WebView 和覆盖链接的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872309/

相关文章:

ios - mkmapview如何通过注解获取位置

ios - Swift - UITableViewController 内不可滚动的 UITableViewController

iphone - 为什么tableView是:cellForRowAtIndexPath: being called on a background thread?

iphone - boolean 值没有在正确的时刻设置

objective-c - NSArrayController - 观察选择索引

html - UIWebView 上的自定义字体仅更改数字的字体

objective-c - 使用 Core Data 时提高 UI 性能

iphone - 在 View 弹出之前存储 UITextField 内容

iphone - 自定义 uinavigationbar 异常

iphone - UI 元素可以包含在 .a 库中吗?