2012-02-18 2 views
1

Я хочу заполнить текстовое поле внутри 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

Приведенный выше код не работает вообще, что мне нужно сделать ?

ответ

7

Наиболее вероятным объяснением, основанным на ограниченных деталях контекста вашего кода, является то, что вы игнорируете асинхронный характер метода loadRequest: и пытаетесь выполнить свои javascript-команды перед загрузкой DOM. Таким образом, выполнение ваших команд ни о чем. Способ обработки этого метода состоит в использовании метода делегата -(void)webViewDidFinishLoad:(UIWebView *)webView;.

Редактировать: To «Я сделал это уже, но это не сработало».

Изучив страницу по вашей ссылке: 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();"]; 
} 
+0

Я сделал это уже, но это не работает ... –

+0

ответа .. Отредактировано – NJones

Смежные вопросы