【问题标题】:Check if NSURLRequest target is "_blank"?检查 NSURLRequest 目标是否为“_blank”?
【发布时间】:2012-12-31 04:23:14
【问题描述】:

我正在监听来自我的 UIWebView 的 url 加载。有没有办法检查请求是否有“_blank”的目标?:

- (BOOL) webView:(UIWebView *)webView
         shouldStartLoadWithRequest:(NSURLRequest *)request
         navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request targetIs:@"_blank"]) {
        // do something.
    }
}

【问题讨论】:

  • 我认为不可能检查 NSURLRequest 是否来自 <a target="_blank"> 链接,因为它们是为了响应 Ajax 请求、iframe 加载等许多事情而创建的。但是,您想要的效果类似于this question

标签: iphone ios


【解决方案1】:

不了解 iOS,但对于 OS X,如果您使用策略委托,它可以完美运行。我已将答案放在上面 Russ 提到的this thread 中。

【讨论】:

    【解决方案2】:

    也许您可以使用 [UIWebView -request] 来获取 NSURLRequest,并使用 [NSURLRequest URL] 检查 url 是否包含您想要的任何内容。

    【讨论】:

    • 是的,但对我来说更好的方法是使用 target="_blank" 捕获所有 url,而不必定义我自己的协议来做同样的事情。
    • 很抱歉,“定义我自己的协议”是什么意思?
    • 例如,在我所有的 url 前加上“__pattern”之类的前缀,或者其他一些标记,这样我就知道要对这些 url 采取行动(而不是仅仅依靠 target="_blank")。
    • 所以你的意思是请求是你自己发布的,如果 URL 符合某种特定的模式,你希望 UIWebView 做一些特别的事情?
    • 是的,如果 target="_blank",我想使用给定的 url 启动一个移动 safari 实例。这似乎不起作用。
    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 2015-01-09
    • 1970-01-01
    • 2018-07-05
    • 2013-04-24
    相关资源
    最近更新 更多