【问题标题】:JavaScript/VBA Automation: Changing the onclick attributeJavaScript/VBA 自动化:更改 onclick 属性
【发布时间】:2012-04-08 08:35:58
【问题描述】:

我正在尝试使用 VBA 中的自动化从表单上按钮的onclick 事件更改函数调用。函数X 已经硬编码到网页中,我无权更改该代码。 (该页面是我公司内部的,但我不在那个部门)。

当我的场景适合时,我想将函数 X 替换为新函数 Y

我似乎与这个 SO 有类似的问题,但它似乎大多是指从 JS 代码中更改元素属性。我的问题是我需要在 VBA 中这样做,但我不知道如何到达那里。

This site 有大量关于此过程的信息(setAttributegetAttribute 等),包括有用的信息:关于使用一个浏览器与另一个浏览器时的注意事项。 我的所有代码都将与 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""); };"

在尝试这些不同的方法时,我注意到 VBE 监视窗口中的 onclick 属性 type 在尝试强制按钮调用新函数,我感觉这和我的问题有关。

有人可以解释一下(如果可能的话)我怎样才能让它工作吗?

【问题讨论】:

    标签: javascript internet-explorer vba automation browser-automation


    【解决方案1】:

    您可以直接在元素属性上更改此项。

    var objButton = document.getElementById("buttonId");
    objButton.onclick = function() { alert("test"); };
    

    【讨论】:

    • 这看起来更像是 JS,而不是 VBA,我无法直接更改 JS。我根据您的回答尝试了objButton.onclick = "function() { alert(""test""); };",但不幸的是,这也不起作用。它与我列出的其他方法具有相同的效果。我可以在监视面板中看到属性值已更改(同样,类型也从 Variant/Object 更改为 Variant/String),当我单击时没有任何反应。
    • 调用 myIEWindow.Document.execScript("document.getElementById('buttonId').onclick = function() {alert('test');};")
    • 这给了我一个“对象不支持此属性或方法”错误。现在寻找更多信息回复:execScript...
    • 玩过这个例子,我确实得到了这个工作:myIEWindow.Document.ParentWindow.execScript "alert('test');" 将尝试调整它以适应我的真实功能代码!
    • 这行得通,减去我的 JS 中的一个明显错误(返回 80020101),但现在这是一个不同的问题。感谢您为我指明正确的方向!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2018-06-20
    • 2016-02-17
    • 2021-01-12
    • 2012-09-29
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多