2014-10-13 14 views
11

her istek için bir WKWebView tarafından yüklenen TAM URL almak için bir yolu var mı.WKWebView tam URL

webView:didFinishNavigation: 

anabilgisayar navigasyonlarda sadece çalışır ve bir URL isteği parametresini sağlamaz.

nasıl sadece olduğu gibi TAM URL'yi alırım UIWebViewDelegate en herhangi yükleme tamamlandıktan sonra çağrılan olsun ve webView parametresinden tam istek url alabilirsiniz

webViewDidFinishLoad:webView 

. WKWebView'ın URL özelliğinin, kullanıcı dostu bir temel temel URL almak için yapılması gereken işleri kaydetmesi güzel bir şeydir, ancak büyük bir kayıp, tam bir tane elde edemeyiz! ,

Ama UIWebView isteği mülkiyet

+0

değil' Web görünümü gibi bir şey her istek için 'webView's istek bakarak bunun için' WKNavigationDelegate' kullanabilir misiniz? https://developer.apple.com/library/IOs/documentation/WebKit/Reference/WKNavigationDelegate_Ref/index.html#//apple_ref/occ/intfm/WKNavigationDelegate/webView:didStartProvisionalNavigasyon: – Popeye

+0

WKWebView "istek" özelliği gibi değil UIWebView. Veya WKNavigation nesnesinden isteği almanın herhangi bir yolu var mı? –

+0

Eh, WKNavigationAction Size gerekebilir değil her zaman tipi NSURLRequest – leviathan

cevap

9

İlk sayfanın yükü bittikten sonra ne tutar kıyasla URULs için farklı sonuçlar üretir: decidePolicyForNavigationAction: decisionHandler

Ben

Web Görünümü kullanarak denedi Ben NSURL ve NSURLRequest kafa karıştırıcı olduğunu düşünüyorum. İlk kolaylıkla accessibly webView.URL yoluyladır ve aslında size yüklendi olursa olsun tam URL veriyor. URL derken, NSURL'u kastediyorsunuz demektir. Örneğin, yönlendirme zincirini veya yanıt üstbilgilerini görmek istiyorsanız, örneğin, WKWebView aracılığıyla belirli bilgilere ulaşamayacağınızdan korkuyorsanız, bunun anlamı kastedilmiyorsa.

Sen nispeten kolayca istekleri yakalamak ve tam istek/yanıt görebileceğiniz UIWebView geri düşmek zorunda kalacaktır.

+0

Yardım isteğiniz için Stefan'a çok teşekkür ederim ama davamı veya WKWebView sınıfını anlamadığınızı düşünüyorum. WebView.URL size verir - Bu, kullanıcı arayüzüne yansıtılması gereken URL'dir. Bu, yol, sorgu vb. Içermeyen kullanıcı dostu URL dizisidir. FULL ile, tüm parçaları, yani web görünümünde yüklenen web sayfasıyla etkileşimde bulunurken otomatik olarak oluşturulan bir istekten gelen URL'yi kastediyorum. Yeni gezinme delege protokolünü kullanarak bunu elde etmenin bir yolunu buldum. WKWebView, UIWebView'den çok daha iyi ve size daha da derinlemesine bakmanızı tavsiye ediyorum –

+0

Hala tam olarak ne demek istediğini anlamıyorum * tam * URL. Ben 'webView.URL' bir test olarak yazdırıyorum ve orada tüm bitler, yol, sorgu, parça, vb.Hangi bilgileri kaçırdığınızı merak ediyorum. –

+0

Ayrıca, webView.URL'nin kullanıcı arayüzü ile ilgisi olmadığını unutmayın. UI dostu bir dize değil * Bu, şu anda WKWebView'de yüklü olan sayfayı yansıtan bir "NSURL" örneğidir. –

6

Sen decidePolicyForNavigationAction temsilci yönteminde "navigationAction.request.URL" tarafından yeni talep Web URL'sini alabilirsiniz. didStartProvisionalNavigation: `

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) 
} 
+1

Teşekkürler, bu bana yardımcı oldu –