WKWebView проверка для отправки формы HTML - PullRequest
0 голосов
/ 12 июня 2018

Мне было поручено преобразовать приложение Objective-C в полнофункциональную версию Swift 4. По сути, это приложение для веб-обозревателя, охватывающее веб-сайт моей компании.Чтобы пользователи не жаловались на ввод своего имени пользователя / пароля каждый раз, приложению необходимо проверять, когда была отправлена ​​HTML-форма, очищать сайт и сохранять u / p.

В ObjC был метод:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

Это позволило мне проверить, когда форма была отправлена:

static NSString * const FORM_USER = @"document.getElementById('sUserID').value";
static NSString * const FORM_PASS = @"document.getElementById('sPassword').value";

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

        //save form data
        if(navigationType == UIWebViewNavigationTypeFormSubmitted) {
            dispatch_async(dispatch_get_main_queue(), ^{
                //grab the data from the page
                NSString *username = [self.webView stringByEvaluatingJavaScriptFromString: FORM_USER];
                NSString *password = [self.webView stringByEvaluatingJavaScriptFromString: FORM_PASS];

                //store values locally in the background
                //.....
            });

        }
        return true;
    }

Но у меня возникли проблемы с конвертированием этого Swift 4.1, так как я не могу найти какой-либо тип UIWebViewNavigationTypeFormSubmitted для WKWebView.

Любая помощь?

let FORM_USER = "document.getElementById('sUserID').value"
let FORM_PASS = "document.getElementById('sPassword').value"

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

    if(webView.url == API_LOGIN_URL){

        if(WHAT A DO I CHECK FOR here?){

            //Grab IN LOGIN DETAILS
            var name = webView.evaluateJavaScript("\(FORM_USER)", completionHandler: nil)
            var pass = webView.evaluateJavaScript("\(FORM_PASS)", completionHandler: nil)

            //store values locally
            //...
        }

    }
}

1 Ответ

0 голосов
/ 12 июня 2018

Это должно быть

if navigationType == UIWebViewNavigationType.formSubmitted

или

if navigationType == .formSubmitted
...