リクエストごとにWKWebView
によって読み込まれた完全なURLを取得する方法はありますか?
webView:didFinishNavigation:
mainFrame
ナビゲーションでのみ機能し、URL要求パラメーターは提供しません。
UIWebViewDelegate
のように完全なURLを取得する方法
webViewDidFinishLoad:webView
...読み込みが完了すると呼び出され、webView
パラメータから完全なリクエストURLを取得できます。
WKWebView
のURL
プロパティがUIに適したベースURLを抽出するために必要な作業を保存するのは素晴らしいことですが、完全なURLを取得することはできません。
私は使用してみました
webView:decidePolicyForNavigationAction:decisionHandler:
...しかし、ページのロードが完了した後にUIWebView
のrequest
プロパティが保持するものと比較して、URLに対して異なる結果を生成します。
まず、NSURL
とNSURLRequest
を混同していると思います。最初はwebView.URL
を介して簡単にアクセスでき、実際にロードされたものの完全なURLを提供します。 [〜#〜] url [〜#〜]と言う場合は、NSURL
を意味すると仮定します。
それが意図したものではない場合、たとえば、リダイレクトチェーンや応答ヘッダーを表示したい場合、WKWebView
を介して特定の情報を取得できないという答えが怖いです。
UIWebView
にフォールバックする必要があります。ここでは、リクエストを比較的簡単にインターセプトして、リクエスト/レスポンス全体を確認できます。
新しくリクエストされたWebページのURLは、decidePolicyForNavigationActionデリゲートメソッドの「navigationAction.request.URL」で取得できます。
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
if let urlStr = navigationAction.request.URL?.absoluteString{
//urlStr is what you want, I guess.
}
decisionHandler(.Allow)
}