Наиболее вероятным объяснением, основанным на ограниченных деталях контекста вашего кода, является то, что вы игнорируете асинхронный характер метода 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();"];
}
Я сделал это уже, но это не работает ... –
ответа .. Отредактировано – NJones