使用VBA执行javascript函数

时间:2019-05-11 13:45:40

标签: javascript html vba

我正在尝试使用VBA执行javascript函数,但没有成功。

我在列表框中选择一个项目。

我的目标:选定项目后刷新结果。

VBA:

IEdoc_NEW2.getElementById("native_dropdown_selected_size_name").selectedIndex = 1
Call IEdoc_NEW2.parentWindow.execScript("dummySubmitButton()", "JavaScript")

HTML:

<select name="dropdown_selected_size_name" tabindex="-1" class="a-native-dropdown" id="native_dropdown_selected_size_name" autocomplete="off" data-a-touch-header="Taille">
  <option id="native_size_name_-1" value="-1" selected="" data-a-id="size_name_-1">Sélectionner</option>
  <option class="dropdownAvailable" id="native_size_name_0" value="0,B07DHJZSB3" data-a-id="size_name_0" data-a-html-content="S" data-a-css-class="dropdownAvailable">
    S </option>
  <option class="dropdownUnavailable" id="native_size_name_1" value="1,B07DHKZM7P" data-a-id="size_name_1" data-a-html-content="M" data-a-css-class="dropdownUnavailable">
    M
  </option>
  <option class="dropdownUnavailable" id="native_size_name_2" value="2,B07DHK697N" data-a-id="size_name_2" data-a-html-content="L" data-a-css-class="dropdownUnavailable">
    L
  </option>
</select>

JavaScript:

if (typeof(TwisterNonJs) == 'undefined') {
  window.TwisterNonJs = {};
  TwisterNonJs.handleDropDown = [];
}
TwisterNonJs.handleDropDown[1] = function() {
  var twisterUpdateButton = "submit.twisterUpdateButton_1"
  document.getElementById("dummySubmitButton").setAttribute("name", twisterUpdateButton);
  document.forms['twister'].submit();
};
document.getElementById("native_dropdown_selected_size_name").onchange = function() {
  TwisterNonJs.handleDropDown[1]();
};

但这不起作用。

1 个答案:

答案 0 :(得分:1)

尝试onchange fireEvent

IEdoc_NEW2.getElementById("native_dropdown_selected_size_name").FireEvent "onchange"

您还可以尝试添加一个事件然后将其触发

Dim evt As Object
Set evt = .document.createEvent("HTMLEvents")
evt.initEvent "change", True, False

IEdoc_NEW2.querySelector("#native_dropdown_selected_size_name").dispatchEvent evt