如何使用 UIWebView 在 Safari 中打开除某些链接之外的所有链接?
How to open all links, besides some, in Safari with UIWebView?
我从 here 获得了以下代码,用于在 Safari 中打开与我的域不匹配的所有其他链接:
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(request.URL!)
return false
}
return true
}
尽管如何允许在我的 UIWebView
而不是 Safari 中打开另一个指定的域,例如 paypal.com
?
您可以存储允许的 URL 列表并过滤请求的主机名 URL。如果主机匹配允许的 URL 之一,则 return true 允许 URL 在 web 视图中加载。否则使用 UIApplication.openURL() 在 Safari 中打开 URL。
例如:
let safeList = [ "paypal.com", "google.com" ]
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.LinkClicked {
if let host = request.URL?.host where safeList.contains(host) {
return true // Open in web view
}
UIApplication.sharedApplication().openURL(request.URL!)
return false
}
return true
}
我从 here 获得了以下代码,用于在 Safari 中打开与我的域不匹配的所有其他链接:
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.LinkClicked {
UIApplication.sharedApplication().openURL(request.URL!)
return false
}
return true
}
尽管如何允许在我的 UIWebView
而不是 Safari 中打开另一个指定的域,例如 paypal.com
?
您可以存储允许的 URL 列表并过滤请求的主机名 URL。如果主机匹配允许的 URL 之一,则 return true 允许 URL 在 web 视图中加载。否则使用 UIApplication.openURL() 在 Safari 中打开 URL。
例如:
let safeList = [ "paypal.com", "google.com" ]
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
if navigationType == UIWebViewNavigationType.LinkClicked {
if let host = request.URL?.host where safeList.contains(host) {
return true // Open in web view
}
UIApplication.sharedApplication().openURL(request.URL!)
return false
}
return true
}