【问题标题】:issue with web view and overriding linksWeb 视图和覆盖链接的问题
【发布时间】:2012-01-15 18:40:22
【问题描述】:

我有一个 UIWebView,其中的某些部分有一个 <a href="" > <img src="" </a>。我已经向这个 UIWebView 添加了一个 UITapGesture ,所以我想要的基本上是当用户点击图像时,它不会把你带到指向它的链接,而是做一些事情。我在阻止图像转到它所指向的超链接时遇到问题。任何的想法?我尝试注入 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]);
    }

还有其他想法吗?

【问题讨论】:

    标签: iphone objective-c ios ipad uiwebview


    【解决方案1】:

    如果您可以控制 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 等...)

    【讨论】:

    • 好吧,问题是我不知道用户会按下哪个 url,这就是为什么我在我的触摸处理程序中使用上面的 javascript 函数来更改我的图像的链接触摸到别的东西,但它不起作用
    • 我不确定你想要实现什么,也许你可以描述一下用例?如果您更改所有链接,那么它们都会出现在您的自定义处理代码中 - 您可以根据 URI 的其余部分做一些不同的事情?
    • 我的意思是,我认为您的 TapGesture 不需要成为解决方案的一部分 - 摆脱它,然后在处理 webView:shouldStartLoadWithRequest:... 中的不同 URL 后执行您的自定义操作,例如photo://image1 photo://image2 photo://image3 - 你可以用不同的方式处理它们(如果你想这样做......)
    • 最初,HTML 源代码将图像链接到某种形式的其他链接...我需要先将其替换为自定义链接 (photo://image1)。如何将所有图像链接更改为类似的内容?
    • 也是我想要触摸的原因是因为在加载 html 之前替换所有出现的第一手图像将是一个开销,如果我只是替换那个特定的图像时我在图像上进行触摸,这样更有效。这就是为什么我有点击手势
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多