Вызовите «действие» в веб-форме HTML в UIWebView - PullRequest
1 голос
/ 24 января 2012

Я пытаюсь пропустить страницу входа на веб-сайт, чтобы я мог предоставить пользователю более эстетически привлекательную страницу входа и сохранить его учетные данные для автоматического входа в будущем. Пока у меня есть два UITextFields и UIButton. Пользователь вводит свое имя пользователя и пароль, и после нажатия кнопки UIB их данные вводятся в фактическую веб-форму на странице входа в систему сайтов, а последующая страница входа в систему отображается в UIWebView. Веб-представление будет скрыто, пока приложение регистрирует пользователя, а затем будет отображаться после загрузки страницы входа в систему.

Мне удалось заполнить веб-форму, но я просто не могу ее отправить! Я уверен, что есть очень простое решение!

Это код, который у меня есть, и если есть лучший способ, которым я должен это делать, дайте мне знать!

-(IBAction)login:(id)sender
{   
    // Create js strings    
    NSString *loadUsernameJS = [NSString stringWithFormat:@"var username = document.getElementsByName('username')[0]; username.value='%@';", username.text];
    NSString *loadPasswordJS = [NSString stringWithFormat:@"var password = document.getElementsByName('password')[0]; password.value='%@';", password.text];    

    // Autofill the form - this works, and I can see the values being put into the webform
    [self.webView stringByEvaluatingJavaScriptFromString: loadUsernameJS];
    [self.webView stringByEvaluatingJavaScriptFromString: loadPasswordJS];

        // This is the method I have tried to submit the form, but nothing happens (ct100 is the ID of the form).

    [self.webView stringByEvaluatingJavaScriptFromString:@"document.ct100.submit();"];

}

Ответы [ 2 ]

1 голос
/ 26 сентября 2012

Ниже может быть полезен подход

 Put this code  inside the didFinishLoading Method Of UIWebView Protocol

Заполнить USerId

 [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('username').value = 'userId'"];

Заполнить пароль

 [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('password').value = 'password'"];

Кнопка отправки вызова, как показано ниже

    [webView 
stringByEvaluatingJavaScriptFromString:@"document.forms['login_form'].submit();"];

Здесь login_form - это имя вас, форма

Примечание: Выпридется управлять одной вещью, после того как вы заполнили учетные данные нажатием кнопки «Отправить».вам нужно сделать BOOL или что-то еще, чтобы избежать повторения загрузки UIWebView.

0 голосов
/ 24 января 2012

Попробуйте:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"ct100\").submit()"];

Ваш контроллер представления должен реализовать протокол UIWebViewDelegate и установить себя как delegate UIWebView.Возвращение YES из webView:shouldStartLoadWithRequest (см. Код ниже) позволит веб-представлению перейти к любому URL-адресу, на который отправляется ваша форма.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"Allow navigation to request = %@", request);
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...