Der Zugriff auf die URL einer UIWebView in Swift 3

Ich versuche, den Zugriff auf die URL einer UIWebView in Swift 3. Hier ist der code, den ich benutze, um dies zu erreichen (der name meiner webview ist RootView):

let currentURL : NSString = RootView.request?.URL?.absoluteString

Allerdings bekomme ich die Fehlermeldung „Wert, Typ ‚URLRequest‘ has no member ‚URL'“, die mich daran hindert, zu kompilieren. Ich weiß, dass die bisherigen Nutzer von stack overflow haben verwendet die gleiche code-Zeile erfolgreich, so dass ich nicht sicher bin, was hindert mich daran, das auch die Beschaffung der URL. Könnte das problem liegen, die eine Veränderung, dass Apple Swift 3? Danke!

Hier ist mein voller ViewController.swift-Datei, wo ich diesen code einfügen:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var RootView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.RootView.delegate = self
        let url1 = URL (string: "https://www.google.com")!
        RootView.loadRequest(URLRequest(url: url1))
        RootView.scrollView.isScrollEnabled = true
        RootView.isUserInteractionEnabled = true
        let currentURL : NSString = RootView.request?.URL?.absoluteString
        print(currentURL)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
  • Mehr Kontext. Wie die umliegenden code



2 Replies
  1. 0

    Haben Sie drei Optionen zum Zugriff auf die url

    let currentURL : String? = RootView.request?.mainDocumentURL?.absoluteString
    let currentURL : String? = RootView.request?.url?.absoluteString
    let currenturl : String? = RootView.stringByEvaluatingJavaScript(from: "window.location.href")

    aber alle diese drei Werte würde Sie wieder nil als Anfrage braucht Zeit, Sie wird nicht bereit sein, bis die Anforderung abgeschlossen. Einen Versuch haben.

    import UIKit
    
    class URLResearchVC: UIViewController , UIWebViewDelegate {
    
        @IBOutlet weak var RootView: UIWebView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.RootView.delegate = self
            let url1 = URL (string: "https://www.google.com")!
            RootView.loadRequest(URLRequest(url: url1))
            RootView.scrollView.isScrollEnabled = true
            RootView.isUserInteractionEnabled = true
            let currentURL : String? = RootView.request?.mainDocumentURL?.absoluteString
            let currentUrl : String? = RootView.request?.url?.absoluteString
            let currenturl : String? = RootView.stringByEvaluatingJavaScript(from: "window.location.href")
            print(currentURL)
            print(currentUrl)
            print(currenturl)
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }
    
        func webViewDidStartLoad(_ webView: UIWebView) {
            print("-------")
            print(webView.request?.mainDocumentURL)
            print("-------")
            print(webView.request?.url?.absoluteString)
            print("-------")
            print(webView.stringByEvaluatingJavaScript(from: "window.location.href"))
        }
        func webViewDidFinishLoad(_ webView: UIWebView) {
            print("-------")
            print(webView.request?.mainDocumentURL)
            print("-------")
            print(webView.request?.url?.absoluteString)
            print("-------")
            print(webView.stringByEvaluatingJavaScript(from: "window.location.href"))
        }
    }
    • Vielen Dank für die ausführliche Antwort! Die webViewDidFinishLoad Funktion funktioniert perfekt, und ich bin in der Lage zu erhalten die URL der Seite jedes mal, wenn ich navigieren Sie zu einer neuen website in der Webansicht.
  2. 0

    Versuchen Sie, „verlangen“ und nutzen Sie Folgendes:

    lassen currentURL : NSString = RootView.URL?.absoluteString

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.