【问题标题】:VBA IE navigation trigger JavascriptVBA IE导航触发Javascript
【发布时间】:2017-01-17 22:09:23
【问题描述】:

我正在尝试通过 Excel VBA 在 Internet Explorer 中导航。

这是我用来做的 VBA 代码,效果很好:

IEDoc.getElementById("PROGRAMME-select").selectedindex = 1

但是,对于另一个下拉菜单,在选择后会动态更改表单的其余部分,上面的代码不起作用。我认为这是由于网页的javascript。这是它的 HTML 代码:

<DIV id=Q_FORMAT jQuery1441195683481="347">
<INPUT id=Q_FORMAT_data value='{"name":"FORMAT","inputType":"select"}' type=hidden name=Q_FORMAT_data> 
<DIV style="DISPLAY: block" id=FORMAT-label>
<LABEL><B>Format :</B> </LABEL></DIV><SELECT id=FORMAT-select name=FORMAT-select>
<OPTION id=FORMAT_EMPTY_OPTION value=EMPTY_OPTION></OPTION>
<OPTION id=FORMAT_YES value=FORMAT_YES name="FORMAT_YES">Non-Standard</OPTION>
<OPTION id=FORMAT_NO selected value=FORMAT_NO name="FORMAT_NO">Standard</OPTION></SELECT> </DIV>

有谁知道如何触发 javascript,以便通过我尝试执行的选择来更新表单的其余部分?或者可能这是我在这里面临的一个完全不同的问题?

【问题讨论】:

    标签: javascript html vba triggers internet-explorer-8


    【解决方案1】:

    您可以尝试使用列表框的fireevent方法并尝试一次吗?

    例如代码:

    IEDoc.getElementById("PROGRAMME-select").selectedindex = 2
    
    IEDoc.getElementById("PROGRAMME-select").fireevent "Onchange"
    

    【讨论】:

    • 我试过了,但没有任何反应。下拉菜单不会改变。我在 stackoverflow.com link 上看到有人遇到同样的问题并通过以下方式解决了它:IEDoc.parentWindow.execScript ("jQuery('#type').val('2');jQuery('#type').trigger('chosen:updated');") 但我不知道如何修改它以帮助我的情况。
    • 只需在你设置值的代码后面使用这行代码,IEDoc.getElementById("PROGRAMME-select").fireevent "Onchange"
    • 我已经尝试过了,但没有任何反应。无论我将它设置为什么,索引都不会改变。是不是因为 HTML 中没有“onchange”事件?
    • 不是按索引选择,可以尝试按显示的文本选择吗?像下面这样,'设置 weblist = objDocument.getElementsByTagName("Select") For Each btnSelect In weblist If Trim(btnSelect.Name) = "FORMAT-select" Then Set listoption = btnSelect.getElementsByTagName("Option") For Each btnOption In listoption If UCase(Trim(btnOption.Text)) = UCase("Non-Standard") Then btnOption.Selected = True btnSelect.fireevent "Onchange" Exit For End If Next end if Next'
    • hm no :/ 似乎没有成功。它贯穿但不改变价值。您认为需要以某种方式触发 jQuery 吗?
    【解决方案2】:

    表单更改后,文档上有新的 html。而不是使用 IEDoc - 您可能在更改之前设置 - 只需使用 ie.document.getElementById("NEW NAME HERE").selectedindex = 1

    (假设您将 msie 的实例设置为 ie。只需使用您为该实例提供的任何变量,.document 将始终在任何 javascript 更改后为您提供最新版本。表单 ID 也可能已更改,因此您可能会尝试再次在表单中列出所有 ID 以查看。)

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      相关资源
      最近更新 更多