javascript - 填写表单并在 UIWebView 中提交

标签 javascript iphone objective-c forms 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;委托(delegate)方法。

编辑:到“我已经这样做了,但没有用。”。

检查您的链接页面后: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();"];
}

关于javascript - 填写表单并在 UIWebView 中提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344409/

相关文章:

javascript - 附加到另一个后如何隐藏div?

iphone - 来自其他 UIViewController 的 NSString 为空

iphone - Facebook apprequests 通知不会显示在 Facebook iPhone 应用程序中

javascript - 有没有办法从 JavaScript 中的字符串中删除 html 标签?

javascript - 在传单中创建一个圆圈而不重新加载 WebView

javascript - Node.js 谷歌云平台数据存储日期比较

iphone - 自定义 UINavigationController 和 UIBarbuttonItem

已发布应用程序上的 iPhone 崩溃捕获选项

iphone - willPresentActionSheet 一个类中的两个不同的操作表。如何知道哪一个会出现

iPhone ASIFormDataRequest 与多部分/表单数据