3

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

当我的场景适合时,我想X用一个新的函数替换函数Y

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

该站点有大量关于此过程的信息(setAttributegetAttribute等),包括有用的信息:re: 使用一种浏览器与另一种浏览器时的注意事项。我所有的代码都将与 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属性类型在尝试强制按钮调用新函数后从其原始类型 Variant/Object 更改为 Variant/String,我觉得这有一些东西与我的问题有关。

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

4

1 回答 1

1

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

var objButton = document.getElementById("buttonId");
objButton.onclick = function() { alert("test"); };
于 2012-03-23T19:17:34.053 回答