我正尝试使用VBA中的自动化在表单上的按钮的onclick
事件中更改函数调用。功能X
已被硬编码到网页中,并且我无权更改该代码。 (该页面在我的公司内部,但我不在该部门)。JavaScript/VBA自动化:更改onclick属性
当我的情况合适时,我想用新函数Y
替换函数X
。
我对这个问题似乎有类似的问题,但它似乎最引用了从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类型/对象的窗口改变试图迫使后按钮来调用新功能,我觉得这与我的问题有关。
有人可以请解释如何(如果可能)我可以得到这个工作?
这看起来更像是JS,而不是VBA,而且我无法直接更改JS。我试着'objButton.onclick =“function(){alert(”“test”“);};”'根据你的回答,但是这不起作用,不幸的是。它与我列出的其他方法具有相同的效果。我可以在监视面板中看到属性值已经改变(同样,也是从Variant/Object到Variant/String的类型)并且当我单击时没有任何反应。 – Gaffi 2012-03-23 19:22:48
调用myIEWindow.Document.execScript(“document.getElementById('buttonId')。onclick = function(){alert('test');};”) – Vyrx 2012-03-23 20:07:15
这给了我一个“对象不支持这个属性或方法“错误。现在寻找更多信息RE:'execScript' ... – Gaffi 2012-03-23 20:12:18