30

WKWebViewすべてのリクエストに対して完全な URL をロードする方法はありますか?

webView:didFinishNavigation:

ナビゲーションでのみmainFrame機能し、URL 要求パラメーターを提供しません。

UIWebViewDelegateのように完全な URL を取得するにはどうすればよいですか

webViewDidFinishLoad:webView

...読み込みが終了した後に呼び出され、webViewパラメーターから完全なリクエスト URL を取得できます。

WKWebViewURLプロパティによって、UI に適したベース URL を抽出するために必要な作業が省略されるのは良いことですが、完全な URL を取得できないのは大きな損失です!

使ってみました

webView:decidePolicyForNavigationAction:decisionHandler:

UIWebView...しかし、ページの読み込みが終了した後にのrequestプロパティが保持するものと比較して、URL に対して異なる結果が生成されます。

4

3 に答える 3

24

新しくリクエストされた Web ページの URL は、decisionPolicyForNavigationAction デリゲート メソッドの「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)
}
于 2016-05-04T10:23:33.447 に答える
20

まず、あなたは混乱NSURLしていると思いますNSURLRequest. 1 つ目は経由で簡単にアクセスでき、読み込まれたものの完全な URLwebView.URLが実際に表示されます。あなたがURLを言うところはあなたが意味すると仮定します。NSURL

それが意図したものではない場合、たとえば、リダイレクト チェーンや応答ヘッダーを確認したい場合など、WKWebView.

UIWebViewリクエストを比較的簡単にインターセプトし、完全なリクエスト/レスポンスを確認できる場所にフォールバックする必要があります。

于 2015-03-12T19:58:31.823 に答える