Цель C - запуск Javascript для автозаполнения веб-страниц. Нужна помощь пожалуйста - PullRequest
0 голосов
/ 15 марта 2012

Я несколько часов подчеркивал это и не могу заставить его работать.У меня нет опыта работы с javascript, и я искал в форумах и на других сайтах, но я не могу найти решение, которое работает.

Я пытаюсь заполнить форму с помощью веб-просмотра в xCode

На сайте http://www.eatwellguide.org/mobile/ находится форма.

На сайте есть этот форум

             <form name="data[Search][form]" METHOD="post" ACTION="/search/advanced/find" ID="frmAS" >
                 <ul>
                   <li><input type="hidden" name="device" id="device" value="mobile" title="mobile">
                      <input type="hidden" name="iframe" id="iframe" value="11" title="mobile" > Keyword: </li>
                   <li><input type="text" name="data[Search][keyword]" id="SearchKeyword" title="search by keywords" /> 
                      <input ID="SearchSubmit" class="BTNsend"  type="submit" value="Find" name="data[Search][submit]"/></li>
                   <li>Zip / Postal  Code:</li>
                   <li><input type="text" title="Zip search" value="" name="data[Search][zip_code]"  />   <input ID="SearchSubmit" class="BTNsend" type="submit" value="Find" name="data[Search][submit]"/> </li>
                   <li><select name="data[Search][distance]" style="font-size:120%; ">
                         <option value="1">1</option>
                         <option value="5"  selected="">5</option>
                         <option value="10">10</option>
                         <optionvalue="20">20</option>
                         <option value="50">50</option>
                         <option value="100">100</option>
                         <option value="200">200</option>
                        </select> <input type="radio" ID="SearchDistanceUnit" value="Mi" checked="" name="data[Search][distance_unit]" class="BTNradio"/> Mi

Я пытаюсь изменить текстовое поле, которое яимеет заголовок = "поиск по почтовому индексу" и отправьте форму, но мой код не работает вообще.Он даже не заполнит текстовое поле

    NSString* javaScriptString = @"document.getElementById('data[Search][zip_code]').elements.value='22911';";



[self.webView stringByEvaluatingJavaScriptFromString: javaScriptString];

Он просто ничего не делает.Я также пробовал GetElementsByName и многие другие варианты.

1 Ответ

0 голосов
/ 15 марта 2012

Браузеры поддерживают ввод JavaScript прямо в строку URL. Поэтому, если вы загружаете страницу, на которую ссылаетесь, введите следующий URL:

javascript:alert(document.getElementsByName('data[Search][zip_code]'))

Вы получите предупреждение, показывающее, что было найдено. В этом случае я взял ваш getElementByName и исправил его - элементы должны быть во множественном числе, и он возвращает массив.

Наращивание:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0])

Оценивает, чтобы показать элемент ввода. Тогда:

javascript:alert(document.getElementsByName('data[Search][zip_code]')[0].value)

Показывает текущее значение и:

javascript:document.getElementsByName('data[Search][zip_code]')[0].value = '22911'

Заполняет поле. Так что это строка, которую вы хотите (минус javascript:).

Если вы сделали синтаксический неверный поворот, по крайней мере, в Mobile Safari, ваше заявление будет проигнорировано. Если бы вы попытались получить что-то, чего не было, вы бы получили сообщение NULL в оповещении.

...