#javascript #internet-explorer #com #powershell
#javascript #internet-explorer #com #powershell
Вопрос:
Итак, я только сегодня начал играть с Powershell, и я искал, но не могу найти ответ. Я даже не уверен, что смотрю в нужном месте.
Мне нужно использовать powershell, чтобы выбрать правильную комбинацию в некоторых выпадающих списках. Один выпадающий список представляет собой список компаний, а другой — список служб. Список служб заполняется в зависимости от выбранной компании.
Использование сомобъекта IE:
$company = $doc.getElementById("id_companyselection")
$service = $doc.getElementById("id_companyservice")
foreach ($Item in $company) {
if ($Item.text -eq "name_of_company") {
$shippingMethod.value = $Item.value
}
}
Есть ли способ заставить Javascript зарегистрировать событие onchange? По умолчанию раскрывающийся список «сервис», поэтому я не могу сопоставить имеющийся у меня текст со значением, которое мне нужно выбрать. Есть ли другой способ сделать это, который будет использовать существующее значение -> сопоставление текста?
Комментарии:
1. Что вы имеете в виду под «выпадающим списком службы»?
Ответ №1:
Я столкнулся с этим на своей последней работе и так и не нашел отличного решения. Проблема в том, что при изменении .value вы просто делаете это в DOM, поэтому, как вы обнаружили, JavaScript не замечает изменения.
Я нашел чрезвычайно хакерский способ заставить это работать — отправить ключи элементу. У меня нет кода передо мной, поэтому я не могу сказать вам точный синтаксис. Это работает, потому что JavaScript видит это так же, как если бы ввод был получен из буфера клавиатуры, и соответствующим образом обновится.
Это было бы не так уж плохо, если бы не следующий недостаток: страница IE должна быть видимой и активной, чтобы ключи отправки работали — вы не можете просто отправить ключи COM-объекту. Вы делаете COM-объект видимым, затем выбираете процесс, после чего можете отправлять ключи в это окно. Очевидно, что это довольно хрупкое решение, из-за которого пользователь не может выполнять несколько задач во время выполнения скрипта. Я надеюсь, что у кого-то еще есть более элегантный метод. 🙂
В вашем примере раскрывающегося списка, а не текстового поля, вам, вероятно, придется выбрать поле, а затем отправить массивы для перехода к другим значениям раскрывающегося списка.