JavaScript / VBA自动化:更改onclick属性

时间:2012-03-23 19:01:48

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

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

当我的方案适合时,我想用新函数X替换函数Y

我看起来与这个问题类似,但似乎大多数都是指在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属性类型在尝试之后从其原始类型的Variant / Object更改为Variant / String强制按钮调用新功能,我觉得这与我的问题有关。

有人可以解释一下(如果可能的话)我可以让它发挥作用吗?

1 个答案:

答案 0 :(得分:1)

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

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