我正在尝试使用VBA中的自动化从表单上的按钮的onclick
事件更改函数调用。函数X
已经硬编码到网页中,我无权更改该代码。 (该页面是我公司内部的,但我不在该部门。)
当我的方案适合时,我想用新函数X
替换函数Y
。
我看起来与这个问题类似,但似乎大多数都是指在JS代码中更改元素属性。我的问题是我需要在VBA这样做,我不知道如何到达那里。
This site有关于此过程的大量信息(setAttribute
,getAttribute
等),包括有用的信息:使用一个浏览器与另一个浏览器时的警告。 我的所有代码都将与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强制按钮调用新功能,我觉得这与我的问题有关。
有人可以解释一下(如果可能的话)我可以让它发挥作用吗?
答案 0 :(得分:1)
您可以直接在元素属性上更改此内容。
var objButton = document.getElementById("buttonId");
objButton.onclick = function() { alert("test"); };