Как вызвать JavaScript из Internet Explorer DOM - PullRequest
1 голос
/ 24 августа 2011

Я использую VBA (Excel) для управления выпадающим списком на веб-странице, загруженной в Internet Explorer. К раскрывающемуся списку прикреплен некоторый javascript, так что элементы управления пользовательского интерфейса страницы будут меняться при изменении выпадающего списка.

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

Sub selectFromDropdown(ByRef dropdown As HTMLSelectElement, ByVal optionName As String)
    Dim opts
    Dim opt As HTMLOptionElement

    dropdown.Focus
    dropdown.setCapture
    Set opts = dropdown.children
    For i = 1 To opts.Length
        Set opt = opts.Item(i)
        If opt.Text = optionName Then
            opt.Selected = True
            dropdown.selectedIndex = opt.Index
            Exit For
        End If
    Next
    dropdown.releaseCapture
End Sub

Так, как я могу вызвать JavaScript, который прикреплен к этому выпадающему списку? Или вообще, как я могу запустить событие программно через API, предоставляемый MS Internet Explorer? Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вы должны показать достаточно HTML, чтобы мы могли видеть прикрепленный javascript и тип события.

Допустим, это "onclick"

Вы можете иметь

opt.Selected = True
opt.FireEvent "onclick"
0 голосов
/ 10 сентября 2011

вызовите вашу функцию javascript явно при установке значения в выпадающем списке.

Sub selectFromDropdown(ByRef dropdown As HTMLSelectElement, ByVal optionName As String)
    Dim opts
    Dim opt As HTMLOptionElement

    dropdown.Focus
    dropdown.setCapture
    Set opts = dropdown.children
    For i = 1 To opts.Length
        Set opt = opts.Item(i)
        If opt.Text = optionName Then
            opt.Selected = True
            dropdown.selectedIndex = opt.Index
            'Call hear javascript function.
            Exit For
        End If
    Next
    dropdown.releaseCapture
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...