Я пытаюсь изменить вызов функции из события onclick
кнопки на форме, используя автоматизацию в VBA. Функция X
уже жестко запрограммирована на веб-странице, и у меня нет доступа для изменения этого кода. (Страница является внутренней для моей компании, но я не нахожусь в этом отделе).
Когда подходит мой сценарий, я хочу заменить функцию X
новой функцией Y
.
Мне кажется, подобные вопросы с этим SO, но, похоже, больше всего относятся к изменению атрибута элемента из кода JS. Моя проблема в том, что мне нужно сделать это в VBA, и я не уверен, как туда добраться.
Этот сайт содержит много информации об этом процессе (setAttribute
, getAttribute
и т. Д.), Включая полезную информацию о предостережениях при работе с одним браузером против другого. Весь мой код будет взаимодействовать с IE (что предоставляет компания), поэтому не нужно беспокоиться о других параметрах браузера.
При попытке изменить атрибут onclick
на панели просмотра VBE отображается изменение атрибута, но оно ведет себя не так, как ожидалось. После того, как я изменил атрибут, ничего не происходит, когда я щелкаю (либо с помощью моей автоматизации objButton.Click
/ objButton.onclick
, либо фактически вручную нажимая кнопку). Я также пробовал это на других атрибутах (то есть onfocus
) с теми же результатами. Ссылка выше упоминает, что IE имеет некоторые трудности с этим, но я не слишком знаком с JavaScript, и у меня возникают проблемы с выполнением руководства.
Я попробовал следующее: все они имеют один и тот же результат.
Вариант 1:
Set TEST = myIEWindow.Document.createattribute("onclick")
TEST.nodevalue = "function anonymous() {alert(""test""); };"
objButton.setAttributeNode TEST
Вариант 2:
objButton.Attributes("onclick").value = "function anonymous() {alert(""test""); };"
Вариант 3:
objButton.Attributes("onclick").value = "alert(""test"");"
Вариант 4:
objButton.setAttribute "onclick", "alert(""test"");"
Вариант 5:
objButton.onclick = "function() { alert(""test""); };"
Испытывая эти разные методы, я заметил, что атрибут onclick
type в окне наблюдения VBE из-за принудительного нажатия кнопки меняет свой первоначальный тип Variant / Object на Variant / String. чтобы вызвать новую функцию, и я чувствую, что это как-то связано с моей проблемой.
Может кто-нибудь объяснить, как (если возможно) я могу заставить это работать?