[英]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.