Holen Sie sich die aktuellen vollständigen URL für die WKWebView
Ist es ein Weg, um die VOLLSTÄNDIGE URL geladen, die von einem WKWebView
für jede Anforderung?
webView:didFinishNavigation:
Funktioniert nur für mainFrame
Navigationen und nicht einen URL-request-parameter.
Wie bekomme ich die VOLLSTÄNDIGE URL wie in UIWebViewDelegate
's
webViewDidFinishLoad:webView
...die wird aufgerufen, nachdem alle laden abgeschlossen und Sie können die volle URL-Anforderung aus der webView
parameter.
Es ist schön, dass WKWebView
's URL
Eigenschaft speichert die Arbeit, die getan werden muss, um zu extrahieren UI-freundliche Basis-URL, aber es ist ein Riesen Verlust den wir nicht bekommen kann die volle ein!
Habe ich versucht, mit
webView:decidePolicyForNavigationAction:decisionHandler:
...aber es produziert verschiedene Ergebnisse für URLs im Vergleich zu dem, was eine UIWebView
's request
Eigenschaft enthält, der nach Beendigung der Belastung einer Seite.
WKNavigationDelegate
für diese, indem man die webView
s-Anforderung für jede Anforderung in so etwas wie webView:didStartProvisionalNavigation:
? developer.apple.com/library/IOs/documentation/WebKit/Reference/...:WKWebView nicht "anfordern" Eigenschaft wie UIWebView. Oder gibt es eine Möglichkeit, um die Anfrage von der WKNavigation Objekt?
Gut, die WKNavigationAction hat eine request-Eigenschaft des Typs NSURLRequest
Es ist nicht immer das, was man brauchen könnte. Lesen Sie weiter auf der Diskussion und finden Sie heraus, warum. Ich denke, markierte ich diese Frage als beantwortet anywya
InformationsquelleAutor i-konov | 2014-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, ich glaube, Sie sind verwirrend
NSURL
undNSURLRequest
. Die erste ist leicht zugänglich überwebView.URL
- und tut es tatsächlich geben Ihnen die vollständige URL von was auch immer geladen wurde. Unter der Annahme, dass, wo Sie sagen URL du meinstNSURL
.Wenn das ist nicht, was Sie bedeutete, zum Beispiel, wenn Sie wollen, um zu sehen, die redirect-Kette oder die Antwort-Header, dann fürchte ich, die Antwort ist, dass Sie nicht bekommen, um tht-spezifische Informationen über die
WKWebView
.Müssen Sie zurückgreifen, um
UIWebView
wo Sie abfangen kann-Anforderungen relativ leicht und sehen Sie die vollständige Anfrage/Antwort.Ich verstehe immer noch nicht was du meinst mit full - URL. Ich bin drucken des
webView.URL
als ein test, und ich sehe es hat alle bits in es, den Pfad, query, fragment, etc. Ich bin gespannt, welche Informationen fehlen Ihnen?Beachten Sie auch, dass
webView.URL
hat nichts zu tun mit der Benutzeroberfläche. Es ist nicht ein UI-freundlich-Zeichenfolge, sondern eine fulNSURL
Instanz, welche die Seite, die gerade geladen wird in derWKWebView
.Gut, mein schlechtes! Ich habe einige nachforschungen und tests heute und das problem scheint zu sein, dass WKWebView nicht Bericht beenden des Ladens auf nicht-Haupt-frames. Sie können get-request-URLs aus, die entscheiden, Methoden der navigation delegieren, aber das, was Sie umleiten zu ...du musst tiefer gehen mit URL-Protokolle oder Sie können gehen mit JavaScript Auswertungen des window-Objekts. Die Wurzel meines Problems war, dass ich brauchte, alle Elemente der geladenen URL, aber es zeigte nur Dinge wie youtube.com zum Beispiel. Keine Uhr?v= und so weiter.
Es gibt viele Fragen, die hier zur Verwendung
NSURLProtocol
in Kombination mitWKWebView
. Leider, weil das Netzwerk fordert, geschieht in einer separaten Sandbox-Verfahren verwenden, können Sie diesen trick nicht mehr. Wenn Sie das Niveau der Zugang zu Anfragen, die der web-Ansicht machen, dann ist Ihre einzige option ist die VerwendungUIWebView
statt.InformationsquelleAutor Stefan Arentz
Erhalten Sie die URL für eine neu angeforderte Webseite von "navigationAction.Anfrage.URL" in decidePolicyForNavigationAction delegate-Methode.
InformationsquelleAutor Yuichi Kato
Dies ist Yuichi Kato Antwort für Swift 4. Es ruft die vollständige URL aus der
request
Eigenschaft der navigation Aktion in derwebView(_:decidePolicyFor:decisionHandler:)
Methode derWKNavigationDelegate
.Vergessen Sie nicht, entsprechen Ihrer Klasse
WKNavigationDelegate
und legen Sie Ihre web-Ansicht delegieren entsprechend:InformationsquelleAutor Tamás Sengel