我正在开发一个解析RSS源并在webview中显示详细信息的应用。我想在webview中点击时在外部浏览器中打开链接,但有一个问题是超链接类型,如下所示:
<a href="#" onclick="window.open('http://test.com', '_system', 'location=yes');"><img src="xyz.png"></a>
如果在网页浏览中点击该活动,您能告诉我如何获取活动吗?任何帮助将不胜感激?
答案 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;
}