В настоящее время я пытаюсь запустить несколько бит JS в своем веб-браузере, чтобы просто заполнить несколько текстовых полей на стороннем сайте. Это до сих пор было успешным на других сайтах, но я, похоже, получаю проблемы с определенным URL-адресом.UIWebView не может запускать JavaScript как document.getElementById возвращает null
let loadFirstNameJS = "var inputFields = document.getElementById('Field1'); inputFields.value = '\(firstName)';"
self.webView.stringByEvaluatingJavaScriptFromString(loadFirstNameJS)
Выполнение JS для ввода строкового значения (firstName) ранее было простым. Однако я не могу получить доступ к элементу 'Field1', поскольку он выглядит так, как будто его не существует? (возврат нулевого значения), хотя я могу просматривать и редактировать в браузере.
Было мое понимание, что UIWebView не оправдывает никакой JS до тех пор, пока страница не будет полностью загружена, поэтому предположим, что не может быть проблемой попытки доступа к элементу до его создания.
Вот html конкретного поля1, который я пытаюсь изменить.
<li id="fo134li1" class="notranslate leftHalf ">
<label class="desc" id="title1" for="Field1">
First Name
<span id="req_1" class="req">*</span>
</label>
<div>
<input id="Field1" name="Field1" type="text" class="field text medium" value="" maxlength="255" tabindex="2" onkeyup="handleInput(this); " onchange="handleInput(this);" required="">
</div>
</li>
Это одна из последних вещей, которые мне нужно работать, прежде чем мой проект будет завершен, так что любая помощь, почему это не работает было бы весьма признателен!
Спасибо!
извинений, должны были отметить, что «self.stringByEvaluatingJavaScriptFromString (loadFirstNameJS)» выше всего выполняется в «Func webViewDidFinishLoad (WebView: UIWebView)» Я реализованный небольшую Println() во всех 3-х методах выше и мой журнал консоли не подтверждает никаких ошибок, и страница запускает и заканчивает загрузку. Проверка этого на других веб-сайтах. Я знаю, что заполняет текстовые поля, я не получаю консольный журнал завершения загрузки. –
Можете ли вы загрузить URL-адрес с помощью Safari и запустить JS в консоли веб-инспектора? Если это так, то это скорее всего ваш код. Если нет, используйте веб-инспектор для отладки. Я полагаю, что для этого URL нет аутентификации, поскольку UIWebView не обрабатывает ни одно из них для вас? –
Спасибо, Роури, похоже, что элементы, которые я пытаюсь получить, расположены внутри iframe (объясняет, почему это было не так просто, как первоначально предполагалось). Странно, что запрос на доступ к кадру имеет протокол http, но к кадру, к которому обращаются, имеет протокол https, поэтому Safari блокирует это при попытке получить доступ к содержимому/окну iframes, где текстовые поля связаны с моей JS. –