【问题标题】:Wrapper with WKWebView - Load ALL links within WKWebView带有 WKWebView 的包装器 - 在 WKWebView 中加载所有链接
【发布时间】:2016-10-08 09:37:55
【问题描述】:
WKWebView 允许您通过 Safari 打开外部链接(与基本 URL 不同的链接)。
但是,有时您想打开 WKWebView 本身内的所有链接。
例如,假设您有一个基本 url "https://trader.finmarkets.com",但您有一个链接 "https://secure.transactions.finmarkets.com",您还想在 WKWebView 内打开而不使用将在外部打开的 UIApplication.shared.open(url)。
问题是:
How do I wrap my website to open all links on the WKWebview?
(当然,电子邮件和电话号码除外)
谢谢。
【问题讨论】:
标签:
ios
objective-c
swift
wkwebview
【解决方案1】:
你可以试试这样的:
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .LinkActivated {
if let newURL = navigationAction.request.URL &&
UIApplication.sharedApplication().canOpenURL(newURL) &&
UIApplication.sharedApplication().openURL(newURL) {
print(newURL)
print("User clicked on link. Open it internally.")
decisionHandler(.Allow)
} else {
print("Cannot open URL")
}
} else {
print("Not a user click")
}
}
您可能需要稍微调整一下才能使其完美运行,但我认为它可能符合您的要求。