如何访问在Swift 3中输入WKWebView的用户名和密码

时间:2017-07-06 09:36:24

标签: javascript swift xcode swift3 wkwebview

我正在尝试使用Swift 3中的WKWebView构建iOS应用程序.WebView从其URL加载网站。我需要能够访问用户输入WebView的用户名和密码,以便在用户单击提交按钮时将其保存到UserDefaults。有没有办法做到这一点?谢谢!!

1 个答案:

答案 0 :(得分:0)

funcionando en xcode 12.4

扩展视图控制器:WKNavigationDelegate{

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    

    let lurl:String = webView.url?.absoluteString ?? ""
    
    if (lurl.contains(pagweb+"index.php")) { 
        let defaults = UserDefaults.standard
        var user:String = ""
        var pass:String = ""
        var rememberme: Bool = false
        
        wv.evaluateJavaScript("document.getElementById('user').value;") { (res, error) in
            if res != nil {
                user = res as! String
            }
        }
        wv.evaluateJavaScript("document.getElementById('pass').value;"){ (res, error) in
            if res != nil {
                pass = res as! String
            }
        }
        wv.evaluateJavaScript("document.getElementById('rememberme').checked;"){ (res, error) in
            if res != nil {
                rememberme = res as! Bool
                if rememberme {
                    defaults.set(user, forKey: "USERNAME")
                    defaults.set(pass, forKey: "PASSWORD")
                    defaults.set(true, forKey: "rememberme")
                }else if pass.count > 7 && user.count > 0{
                    defaults.set("", forKey: "USERNAME")
                    defaults.set("", forKey: "PASSWORD")
                    defaults.set(false, forKey: "rememberme")
                }
            }
        }
        
    }
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

    // user - pass - rememberme
    let savedUsername = UserDefaults.standard.string(forKey: "USERNAME")
    let savedPassword = UserDefaults.standard.string(forKey: "PASSWORD")
    let savedrememberme = UserDefaults.standard.bool(forKey: "rememberme")
    
    if savedrememberme {
        wv.evaluateJavaScript("document.getElementById('user').value = '"+savedUsername!+"';")
        wv.evaluateJavaScript("document.getElementById('pass').value = '"+savedPassword!+"';")
        wv.evaluateJavaScript("document.getElementById('rememberme').checked = true;")
    }else{
        wv.evaluateJavaScript("document.getElementById('user').value = '';")
        wv.evaluateJavaScript("document.getElementById('pass').value = '';")
        wv.evaluateJavaScript("document.getElementById('rememberme').checked = false;")
    }
}

}