2011-09-19 4 views
2

iPhone 및 iPad에서 HTML 양식을 자동으로 채우고 제출하지만 UIWebView에서 결과 페이지를 봅니다.UIWebView에서 HTML 양식 및보기 자동 채우기 및 제출 iOS

예 : 대학의 식사 계획에 돈을 추가 할 수있는 웹 사이트가 있습니다. 먼저 학생 번호를 입력하고 제출을 누르고 암호를 입력 한 후 submit을 누르면 잔액이 나타납니다. .

정보를 저장하고 GO를 누른 다음 백그라운드에서 저장된 학생 번호를 채우고 제출을 누르고 결과 페이지가로드 될 때까지 기다린 다음 입력을 기다리는 앱을 만들려고합니다. 암호를 입력하고 submit을 누른 다음 결과 페이지를 저울과 함께 표시하십시오.

양식을 제출하는 데 여러 번 시도했지만 그 후에 UIWebView에 표시 할 수 없습니다.

누구에게 아이디어 나 솔루션이 있습니까?

감사합니다. 어리석은 질문이라면 미안 해요.

답변

2

JavaScript로 할 수 있습니다. UIWebView의 -stringByEvaluatingJavaScriptFromString: 메서드를 사용하여 텍스트를 입력하고 버튼을 클릭합니다.

이 방법은 사용자 이름 필드를 채울 것입니다 : 나는이 3 가지 방법이 도움이 될 수 있습니다 희망의 코드를 필요로하는 사람들을 위해

+0

대단히 감사합니다! 매력처럼 작동 :) – ryanwils

2

- (void)completeUserFieldsForWebView:(UIWebView *)webView withUsername:(NSString *)username { 

    NSString *loadUsernameJS = 
    [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='email']\"); \ 
    for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username]; 
    NSString *loadText = 
    [NSString stringWithFormat:@"var inputFields = document.querySelectorAll(\"input[type='text']\"); \ 
    for (var i = inputFields.length >>> 0; i--;) { inputFields[i].value = '%@';}", username]; 
    [webView stringByEvaluatingJavaScriptFromString: loadUsernameJS]; 
    [webView stringByEvaluatingJavaScriptFromString: loadText]; 

} 

암호 필드를 채울 것이 하나

- (void)completePasswordFieldsForWebView:(UIWebView *)webView withPassword:(NSString *)password { 

    NSString *loadPasswordJS = 
    [NSString stringWithFormat:@"var passFields = document.querySelectorAll(\"input[type='password']\"); \ 
    for (var i = passFields.length>>> 0; i--;) { passFields[i].value ='%@';}", password]; 
    [webView stringByEvaluatingJavaScriptFromString: loadPasswordJS]; 

} 

양식 제출 :

- (void)clickOnSubmitButtonForWebView:(UIWebView *)webView { 

    NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \ 
    passFields[0].click()"; 
    [webView stringByEvaluatingJavaScriptFromString:performSubmitJS]; 

}