WKWebView - 在 Swift 中的重定向时向 URL 添加参数 - iOS
WKWebView - Add a parameter to the URL on redirect in Swift - iOS
我是 Swift 的新手,目前使用 swift 4.0,并且有一个非常简单的应用程序,其中包含 WKWebView 加载网页。
当页面从一个页面重定向到另一个页面时,我需要将参数附加到 URL。
我正在这个函数中获取重定向事件:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {
}
但在这里我不确定如何通过向其添加参数来更新 URL 然后进行导航。请在导航前帮助更新 URL。
我已经搜索过它并试图找出实现它的方法,但到目前为止我还没有取得进展。 navigationAction.action.url
只是 GET,我无法更新它。
WKNavigationDelegate、URLComponents
class ViewerViewController: UIViewController, WKNavigationDelegate //<--
// then whenever you call the WKWebView
//ex: URL = https://en.wikipedia.org/wiki/Main_Page
WKWebView.navigationDelegate = self
WKWebView.load(URLRequest)
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
print("URL:", navigationAction.request.url)
if let host = navigationAction.request.url?.path
{
if host.contains("Main_Page")
{
//You can modify this part to form a new url and pass it again.
var components = URLComponents()
components.scheme = navigationAction.request.url?.scheme
components.host = navigationAction.request.url?.host
components.path = navigationAction.request.url!.path
print("new URL:", components.url!)
let customRequest = URLRequest(url: components.url!)
//change the url and pass it again..
WKWebView.load(customRequest) //<--load the new url again..
decisionHandler(.cancel)
}
else
{
decisionHandler(.allow) //<-- this will open the page.
}
}
else
{
decisionHandler(.allow)
}
}
我是 Swift 的新手,目前使用 swift 4.0,并且有一个非常简单的应用程序,其中包含 WKWebView 加载网页。
当页面从一个页面重定向到另一个页面时,我需要将参数附加到 URL。
我正在这个函数中获取重定向事件:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping ((WKNavigationActionPolicy) -> Void)) {
}
但在这里我不确定如何通过向其添加参数来更新 URL 然后进行导航。请在导航前帮助更新 URL。
我已经搜索过它并试图找出实现它的方法,但到目前为止我还没有取得进展。 navigationAction.action.url
只是 GET,我无法更新它。
WKNavigationDelegate、URLComponents
class ViewerViewController: UIViewController, WKNavigationDelegate //<--
// then whenever you call the WKWebView
//ex: URL = https://en.wikipedia.org/wiki/Main_Page
WKWebView.navigationDelegate = self
WKWebView.load(URLRequest)
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
print("URL:", navigationAction.request.url)
if let host = navigationAction.request.url?.path
{
if host.contains("Main_Page")
{
//You can modify this part to form a new url and pass it again.
var components = URLComponents()
components.scheme = navigationAction.request.url?.scheme
components.host = navigationAction.request.url?.host
components.path = navigationAction.request.url!.path
print("new URL:", components.url!)
let customRequest = URLRequest(url: components.url!)
//change the url and pass it again..
WKWebView.load(customRequest) //<--load the new url again..
decisionHandler(.cancel)
}
else
{
decisionHandler(.allow) //<-- this will open the page.
}
}
else
{
decisionHandler(.allow)
}
}