Targets -> build phasses -> link binary with libraries -> 添加 WebKit.framework
1.准备重定向Html
<html>
<head>
<Meta http-equiv="Content-Language" content="zh-cn">
<Meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<title>跳转到baidu.com</title>
</head>
<body>
<form name=loading>
<P align=center><FONT face=Arial color=#0066ff size=2>loading...</FONT>
<INPUT style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bolder; PADDING-BottOM: 0px; COLOR: #0066ff; BORDER-TOP-style: none; PADDING-TOP: 0px; FONT-FAMILY: Arial; BORDER-RIGHT-style: none; BORDER-LEFT-style: none; BORDER-BottOM-style: none"
size=46 name=chart>
<BR>
<INPUT style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; COLOR: #0066ff; BORDER-BottOM: medium none; TEXT-ALIGN: center" size=47 name=percent>
<script language="javascript">
var bar=0
var line="||"
var amount="||"
count()
function count(){
bar=bar+2
amount =amount + line
document.loading.chart.value=amount
document.loading.percent.value=bar+"%"
if (bar<99){
setTimeout("count()",100);
}else{
window.location = "https://www.baidu.com";
}
}
</script>
</P>
</form>
</body>
</html>
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet private var webView: WKWebView! {
didSet {
webView.navigationDelegate = self
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if let url = Bundle.main.url(forResource: "tmpML", withExtension: "html") {
let request = URLRequest(url: url)
webView.load(request)
}
// let urlString = "https://www.baidu.com"
// webView.load(URLRequest(url: URL(string: urlString)!))
observeWkwebview()
}
private func observeWkwebview() {
}
}
extension ViewController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
print( ": didFailProvisionalNavigation")
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
print( ": didStartProvisionalNavigation 1")
}
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
print( ": didCommit 1")
}
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
print( ": didFail")
}
func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
print( ": webViewWebContentProcessDidTerminate")
webView.reload()
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if(navigationAction.navigationType == .other) {
if navigationAction.request.url != nil {
//do what you need with url
//self.delegate?.openURL(url: navigationAction.request.url!)
// 重定向截取URL, 然后重新加载
if navigationAction.request.url == URL(string: "https://www.baidu.com/") {
let urlString = "https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_8839428571995616007%22%7D&n_type=-1&p_from=-1"
webView.load(URLRequest(url: URL(string: urlString)!))
}
}
decisionHandler(.allow)
return
}
decisionHandler(.allow)
}
}
在 func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
中判断需要截取的URL,然后手动重新load webview
https://stackoverflow.com/questions/45604336/capture-redirect-url-in-wkwebview-in-ios https://stackoverflow.com/questions/45604336/capture-redirect-url-in-wkwebview-in-ios https://developer.apple.com/forums/thread/117073
原文地址:https://blog.csdn.net/qq_29680975/article/details/122728789
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。