【发布时间】:2013-12-05 21:48:14
【问题描述】:
假设有人直接在带有 UIWebView 的简单 iOS 应用中运行 Web 应用。 是否可以使用 JavaScript 等 Web 技术在浏览器 (Safari Mobile) 中打开外部网站链接?如果是,怎么做?
【问题讨论】:
-
或许使用
iFrame? -
不可能,因为应该能够加载许多不同的网站,并且大多数网站都阻止内联到 iframe。
假设有人直接在带有 UIWebView 的简单 iOS 应用中运行 Web 应用。 是否可以使用 JavaScript 等 Web 技术在浏览器 (Safari Mobile) 中打开外部网站链接?如果是,怎么做?
【问题讨论】:
iFrame?
以编程方式打开 URL:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://www.google.com"];
就您的 WebView 而言,您可以使用 WebViewDelegate 来捕获和检查用户选择的任何超链接。例如:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *urlPath = [request URL];
if (navigationType == UIWebViewNavigationTypeLinkClicked)
{
if ([[urlPath scheme] hasPrefix:@"http"]))
{
[[UIApplication sharedApplication] openURL:urlPath];
return (NO);
}
}
return (YES);
}
这应该会在浏览器应用中打开任何超链接点击。
您还可以创建自定义协议,请参阅Android / iOS - Custom URI / Protocol Handling,并通过检查 [url scheme] 属性在同一个委托处理程序中捕获这些协议。这将允许您使用 javascript 显式执行某些操作。
【讨论】: