簡體   English   中英

填寫表格並提交UIWebView

[英]Filling out a form and submitting in a UIWebView

我想在UIWebView內填寫一個文本框,因此我正在使用以下代碼進行操作;

NSString *inputipjavascript = [NSString stringWithFormat:@"document.getElementById('IP').value = '%@';", enterip];

NSString *result;
[webView stringByEvaluatingJavaScriptFromString:inputipjavascript];
result = [webView stringByEvaluatingJavaScriptFromString:@"$('#GD').click();"];

我要自動填寫並提交的表單頁面為:

http://www.whatismyip.com/tools/ip-address-lookup.asp

上面的代碼根本不起作用,我該怎么辦?

基於代碼上下文的有限細節的最可能的解釋是,您忽略了loadRequest:方法的異步特性,並試圖在加載DOM之前執行JavaScript命令。 因此,什么都不執行。 UIWebView處理此問題的方法是使用-(void)webViewDidFinishLoad:(UIWebView *)webView; 委托方法。

編輯:要“我已經做到了,但是沒有用。”。

在您的鏈接上檢查頁面后: http://www.whatismyip.com/tools/ip-address-lookup.asp : http://www.whatismyip.com/tools/ip-address-lookup.asp 您的JavaScript與目標網頁的元素不兼容。 例如,這里是IP輸入字段的標簽。

<input type="text" name="IP" value="xxx.xxx.xxx.xxx">

而且您正在嘗試使用getElementById('IP')來訪問它。 它沒有id元素,因此您沒有引用任何內容。 最精確的說明符是name元素,其值是IP 我想到的第一個方法是getElementsByName() ,然后我只需要使用元素[0]

為了進行快速測試,我在IBAction中添加了幾行進行測試,它們為我工作:

- (IBAction)enterAndPress:(id)sender {
    NSString *enterip = @"74.125.227.50"; // take that google
    [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementsByName('IP')[0].value = '%@';",enterip]];
    [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('GL')[0].click();"];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM