Zrób ten kod currentURL = currentWebView.request.URL.absoluteString; po załadowaniu widoku sieci Web, więc użyj - (void) webViewDidFinishLoad: (UIWebView *) webView. Może to pomoże.
Xcoder
OP, biorąc pod uwagę, że to pytanie ma 78 tys. Wyświetleń, jest całkiem dobrze przywoływane. Czy mógłbyś zaktualizować zaakceptowaną odpowiedź na zdecydowanie bardziej pozytywną, aby zapobiec przyszłym nieporozumieniom? Dzięki!
Albert Renshaw,
Odpowiedzi:
45
Wersja Matt jest znacznie czystszy. Zalecam wszystkim używanie tego zamiast tego
Dzięki. Mój kod powyżej działa podczas wykonywania w didFinishLoad .... Gdzieś przeczytałem, że wersja js nie działa na każdej stronie. Ale spróbuję.
danielreiser
11
Matt jego wersja jest znacznie czystsza. Więc tak, polecam wszystkim używanie tego zamiast tego.
Rengers
1
Tylko w ten sposób działa na przykład na m.youtube.com. Wszystkie inne odpowiedzi zwracają nieprawidłowe adresy URL.
cprcrack
2
W rzeczywistości oceniam „document.URL”, a nie „window.location” (które zawsze było puste). Jest to przydatne do wewnętrznych dostosowań adresu URL strony w witrynach z dużą ilością kodu JS, które mogą nie używać tradycyjnego ładowania stron.
SmartyP,
1
Dwie osoby powyżej - Aubada Taljo i Taranfx - Rengers zauważyli dość odważnie (dosłownie tekst jest pogrubiony) i pokornie, że ludzie powinni używać wersji Matta z ponad 230 polubieniami poniżej. Najwyraźniej w chwili udzielenia odpowiedzi zadziałało i zostało zaakceptowane, a ponad 30 osób uznało, że też działa. To ma teraz 5,5 roku. Dobra rzecz, Rengers. Dzięki za wskazanie ludziom odpowiedzi Matta poniżej.
App Dev Guy
317
window.location przez JS nie działało dla mnie niezawodnie, ale to:
Otrzymasz niepoprawny adres URL, jeśli witryna wczyta niektóre reklamy w innym żądaniu. Bardziej przejrzysty wariant napisany przezMark Sands
OdNairy
nie działa dla wyników wyszukiwania google. Podczas uzyskiwania dostępu do wyników wyszukiwania z google pokazuje mi adres URL google, a nie adres strony wyników wyszukiwania. Jakakolwiek pomoc .........
Nirav Gadhiya,
@iOSDeveloper Google prawdopodobnie używa stanu push „HTML5” do manipulowania adresem URL, który nie obejmuje wykonywania innego żądania (więc currentWebView.request nie jest aktualizowany).
danw
3
Ta metoda wydaje się nie działać, jeśli witryna zrobiła historię.pushState
andrrs
1
W Swift 4: webView.request? .MainDocumentURL? .AbsoluteString
DmitryKanunnikoff
55
oto kod, którego używam do pobierania adresu URL za każdym razem, gdy przechodzisz do innego linku w widoku internetowym:
Używam shouldStartLoadWithRequestzdarzenia (UIWebViewDelegate) do przechwytywania aktualizacji adresów URL. request.mainDocumentURL.absoluteStringdostaniesz adres URL głównej strony internetowej (który zwykle jest tym, czego chcesz), a jednocześnie request.URL.absoluteStringzawiera CSS i JavaScript.
Odpowiedzi:
Wersja Matt jest znacznie czystszy. Zalecam wszystkim używanie tego zamiast tego
Możesz spróbować tego:
źródło
window.location przez JS nie działało dla mnie niezawodnie, ale to:
Źródło: http://mohrt.blogspot.com/2008/10/getting-url-from-uiwebview.html
źródło
Mark Sands
oto kod, którego używam do pobierania adresu URL za każdym razem, gdy przechodzisz do innego linku w widoku internetowym:
źródło
webView.request.URL.absoluteString
powrocienil
Ja również stwierdziłem, że zatwierdzona powyżej odpowiedź nie była wiarygodna. Ale z niewielką modyfikacją wydaje się działać za każdym razem:
Zwróć uwagę na dodanie „.href” do skryptu JavaScript, ponieważ jest on ukryty na końcu wiersza kodu.
źródło
To nie jest poprawne i zwróci zero:
Jednak poniższy kod może uzyskać adres URL, ale URL może nie być aktualnym adresem URL:
Prawidłowy to:
źródło
źródło
Próbowałem tego dla wyników wyszukiwania Google na iPhonie:
Obie zwracają ten sam ciąg!
źródło
tutaj kod, którego używam:
źródło
webView.request.URL
?Ponieważ UIWebView jest przestarzałe, pobranie aktualnego adresu URL przez WKWebview jest bardzo proste.
źródło
Używam
shouldStartLoadWithRequest
zdarzenia (UIWebViewDelegate) do przechwytywania aktualizacji adresów URL.request.mainDocumentURL.absoluteString
dostaniesz adres URL głównej strony internetowej (który zwykle jest tym, czego chcesz), a jednocześnierequest.URL.absoluteString
zawiera CSS i JavaScript.źródło
To zawsze działa. .
źródło
wdrożyć metodę delegata,
URL to dokładnie to, czego potrzebujesz.
źródło
W Szybko spróbuj tego,
źródło
Aby uzyskać aktualny adres URL WKWebView i UIWebview
Oto kod.
źródło