在外部浏览器中打开链接

时间:2014-09-02 18:27:59

标签: javascript html iphone ios7 webview

我正在开发一个解析RSS源并在webview中显示详细信息的应用。我想在webview中点击时在外部浏览器中打开链接,但有一个问题是超链接类型,如下所示:

<a href="#" onclick="window.open('http://test.com', '_system', 'location=yes');"><img src="xyz.png"></a>

如果在网页浏览中点击该活动,您能告诉我如何获取活动吗?任何帮助将不胜感激?

1 个答案:

答案 0 :(得分:1)

您可以在页面加载后通过覆盖JavaScript函数来检测和拦截window.open调用:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [webView stringByEvaluatingJavaScriptFromString:@"window.open = function(url) { window.location.href = 'open-' + url; return window; };"];
}

当有人点击该链接时,您会触发open-http://test.com导航,您可以使用您的代理人检测到该导航,然后启动Safari:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL.scheme hasPrefix:@"open-"]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[request.URL.absoluteString substringFromIndex:5]]];
        return NO;
    }

    // Other logic
    return YES;
}