繁体   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